您现在的位置是:网站首页> 编程资料编程资料
vue中数据不响应的问题及解决_vue.js_
2023-05-24
339人已围观
简介 vue中数据不响应的问题及解决_vue.js_
vue数据不响应问题
将本来要新增的属性提前在data中定义好
我可以提前在userInfo里面定义好,这样就不是新增属性了,就像下面这样
data() { return { userInfo: { name: '子君', sex: '男', // 我先提前定义好 officialAccount: '' } } }直接替换掉userInfo
虽然无法给userInfo里面添加新的属性,但是因为userInfo已经定义好了,所以我直接修改userInfo的值不就可以了么,所以也可以像下面这样写
this.userInfo = { // 将原来的userInfo 通过扩展运算法复制到新的对象里面 ...this.userInfo, // 添加新属性 officialAccount: '前端有的玩' }使用Vue.set
其实上面两种方法都有点取巧的嫌疑,其实对于新增属性,Vue官方专门提供了一个新的方法Vue.set用来解决新增属性无法触发数据响应。
this.$set(this.userInfo,'officialAccount', '哈哈哈哈哈')
出现不响应的原因可能是,后期在data中为一个数组中某个变量增加属性…
解决的一种方法是,提前把这个属性在data中声明好,并赋初识默认值,就交给vue管理了
vue数据响应不及时问题
1.vue由于javascript的限制,对象属性的增加和删除,不能及时更新视图view
因为若一个对象的属性没有在data中声明,则他就不是响应式的。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,这样的话这个对象属性就是响应式的。而执行这个过程必须在data中声明才会有。
var vm = new Vue({ data:{ a:1// vm.a 是响应的 } }) vm.b = 2;// vm.b 是非响应的可以用set来解决这个问题
Vue.set(vm.someObject, 'b', 2); //或者 this.$set(this.someObject,'b',2);
2.由于 JavaScript 的限制, Vue 不能检测以下变动的数组
vm.items[indexOfItem] = newValue; 解决----> Vue.set(vm.items,indexOfItem,newValue) / vm.items.splice(indexOfItem, 1 , newValue)
vm.items.length = newLength; 解决----> vm.items.splice(newLength)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关内容
- Node.js使用多进程提高任务执行效率_node.js_
- Vue 如何关掉响应式问题_vue.js_
- React组件间传值及跨组件通信详解_React_
- vue中如何解除数据之间的双向绑定_vue.js_
- 关于vue双向绑定带来的问题及解决_vue.js_
- vue 双向绑定问题$emit无效的解决_vue.js_
- vue+element tree懒加载更新数据的示例代码_vue.js_
- Vue echarts实例项目商家销量统计图实现详解_vue.js_
- Vue router的addRoute方法实现控制权限方法详解_vue.js_
- 利用TypeScript编写贪吃蛇游戏_javascript技巧_
