原因

我把 vuex 全局变量 $store.state.search.key 绑定到 v-model 上,然后在页面挂载时通过代码修改 $store.state.search.key 的值,最后在页面上输入任意值 input 框就卡住了

解决方法

1.input 标签增加 @input 属性

<input v-model='$store.state.search.key' @input="forceUpdateInput">

2.methods 中增加对应方法

forceUpdateInput(){this.$forceUpdate();}

补充:下面看下Vue-element中el-input输入卡顿问题

最近使用Vue-element时,遇到了el-input输入卡顿问题,影响用户体验,如下

解决Vue input输入框卡死的问题

el-input是这样写的,没有加额外的事件

<el-input v-model="code" placeholder="code" type="textarea" :rows="1"/>

解决方法
使用.lazy修饰符
使用.lazy的修饰符可以取消v-model的双向绑定,避免输入改变增加队列造成卡顿

注意:el-input底层代码会将文本框用div包裹,

所以直接在el-input中使用.lazy修饰符是不成功的,测试了这种写法确实无效

//不成功的使用方法
<el-input v-model.lazy="code" placeholder="code"></el-input>
//成功的使用方法("el-textarea__inner"类可以让样式与框架一致)
<textarea class="el-textarea__inner" v-model.lazy="code" placeholder="code"></textarea>

 textarea class="el-textarea__inner"成功的替换了el-input,并且.lazy生效了,不卡顿了,nice

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。