Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
518 views
in Technique[技术] by (71.8m points)

由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。这句话什么意思?

由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。

官网地址
Vue中数组和对象改变,页面是有及时更新的啊!这句话说的是哪种情况?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

他说的是你改变对象的某一属性,而这一个属性并没有事先定义。Vue通过Object.definedProperty来劫持data上的数据,对对象这一类型会遍历所有属性来设置setter/getter。所以如果你没有事先就声明好对象的属性而动态添加的话会检测不到,比如:

data: {
    obj: {
        x: 1,
    }
},
methods: {
    change() {
        // y没有事先声明,无法检测到变化
        this.obj.y = 2;
    }
}

数组也是同理。【PS:实际上数组是可以检测到的,但是据尤大所说是出于性价比的考虑而没有做,感兴趣可以搜一下,gayhub上有人提过issue貌似】


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...