gpt4 book ai didi

javascript - Vuex 状态变化传播

转载 作者:行者123 更新时间:2023-12-03 03:30:42 24 4
gpt4 key购买 nike

我有一个关于 Vuex react 性设计如何工作的问题。我有以下商店:

// state
state: {
database: {
tables: []
}
}

// mutator
ADD_TABLE(state, {table}) {
state.database.tables.push(table);
}

因此,当 ADD_TABLE 突变发生时,vue 组件和 vuex 监视仅在对象直接更改时使用react,而不对嵌套属性更改使用react。

// after the mutation happens
store.watch(state => state.database, change => console.log(change)) // this doesn't log
store.watch(state => state.database.tables, change => console.log(change)) // this does

这是期望的行为吗?为什么,或者我的代码中有什么问题?

最佳答案

这是 Vue.js 中的性能优化,类似于 PureComponents 在 React 中的工作。

默认情况下仅进行浅层比较,这意味着仅检查对对象属性的引用。

如果数据库属性被重命名、删除或另一个属性被添加到对象中,则更改将被拾取,这表明对象的第一级发生了更改。

您可以通过添加深层或优化您传递的属性来缓解这种情况。

例如,如果您的数据库对象只有一个子属性,则可以轻松将其更改为类似的内容

state: {
databaseTables: []
}

关于javascript - Vuex 状态变化传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46118953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com