Vue.set() this.$set()引发的视图更新思考及注意事项

引文

vue文档列表渲染中有条注意事项:

这里提到的两种情况实际改变了数据但是没有触发视图更新。

由此引出Vue.set(),先上文档API:

imsun,arial,sans-serif; white-space: normal; word-spacing: 0px; text-transform: none; font-weight: normal; color: rgb(51,51,51); padding-bottom: 0px; font-style: normal; text-align: left; padding-top: 0px; padding-left: 0px; margin: 10px 0px 0px; orphans: 2; widows: 2; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px"> ottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px"> ottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px">
ottom: 0px; text-align: center; padding-top: 0px; padding-left: 20px; margin: 0px; line-height: 30px; padding-right: 0px">ottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px"> ottom: 0px; text-align: left; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px">ottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px"> ottom: 0px; text-align: left; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px">
ottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; padding-right: 0px">

this.$set()Vue.set()本质方法一样,前者可以用在methods中使用。

set方法调用时,可以触发页面全部重新渲染。

比如在vue中有个data数组arr:

rush:js;"> //arr=[1,2,3] arr[1]='b' console.log(arr) // [1,3] Vue.set(arr,'c') console.log(arr) // [1,b,c]

可以看出set触发了整个页面的重新渲染,连arr[1]='b'的效果也被重新渲染了。

使用set添加数据

Vue.set()不光能修改数据,还能添加数据,弥补了Vue数组变异方法的不足。

可以使用set添加数据这一特性,解决一些常见问题。

例如循环出的元素点击应用选中样式,再点击取消选中样式。

rush:js;">

点击方法如下:

rush:js;"> clickHandle: function(item){ if(typeof item.checked === 'undefined'){ this.$set(item,'checked',true) } else { item.checked = !item.checked } } // 如果item没有checked属性就用set方法添加,有则取反

这就利用set使用了对象中本身不存在的checked属性来实现想要的功能

深入响应式原理

至于视图更新时机可以看文档

总结

以上所述是小编给大家介绍的Vue.set() this.$set()引发的视图更新思考及注意事项。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

相关文章

可以通过min-width属性来设置el-table-column的最小宽度。以...
yarn dev,当文件变动后,会自动重启。 yanr start不会自动重...
ref 用于创建一个对值的响应式引用。这个值可以是原始值(如...
通过修改 getWK005 函数来实现这一点。这里的 query 参数就是...
<el-form-item label="入库类型" ...
API 变动 样式类名变化: 一些组件的样式类名有所变动,可能需...