Vue提供了watch来监听双向绑定过程中data的变化
但是平时的开发过程中你可能会遇到watch并没有被触发下面对数组、对象和字符串做了简单的测试总结Document watch状态改变
arrchange:{
{watch.arr}}objchange:{
{watch.obj}}objnamechange:{
{watch.objname}}stringchange:{
{watch.string}}numchange:{
{watch.num}}数据展示
arr:{
{arr}}obj:{
{obj}}string:{
{string}}num:{
{num}}arr操作
object操作
String操作
Num操作
测试结果
会触发watch的
Array
- 删除arr[0]
- 删除arr[0].name($delete)
- unshift一个对象到arr
- arr[0]重新赋值($set)
- arr重新赋值
- arr重新赋值($set)
Object
- 修改obj的name字段(obj并没有触发watch,但是属性name触发了watch)
- 修改obj的name字段($set)(同上)
- 添加age属性($set)
- 删除obj的name字段($delete)(同时触发了name的watch)
- 对obj重新赋值(同上)
String、Number 可以触发watch
所以需要触发watch时尽可能重新赋值
代码地址
测试地址添加了vuex的测试实现
测试地址