vue.js - 通过直接用对象替换它的值来改变对象状态
问题描述
我有一个使用 vue 和 vuex 的 Laravel 项目。虽然一切正常,但我发现在突变中我必须遍历数组然后将其推送到状态。直接用新数组替换状态似乎不起作用。
所以,在我的突变中,这不起作用:
mutations: {
setProducts(state, products) {
state.products = products
}
}
但是,这个可以:
mutations: {
setProducts(state, products) {
products.forEach(product => {
state.products.push(product)
}
}
}
这不是一个真正的问题,因为它有效,但我只是想知道为什么第一个似乎更有效时不起作用。
解决方案
Vue 包装了观察到的数组的变异方法,因此它们也会触发视图更新。包装的方法是:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
推荐阅读
- python - Django 从 QuerySets 列表中读取数据
- javascript - JSON 数据返回未定义
- php - 不获取数组文本,而只获取输出
- python - 导入外部包的正确约定是什么?
- java - JDBC 无法连接到 MySQL DB
- java - 通过 TestNG 生成 PDF 报告
- mariadb - 如何在 MariaDB 中设置列名,使用动态值
- r - 尝试使用 R 上的“igraph”包表示网络,无法添加命名的独立节点
- material-ui - 如何使用 Figma 将 Material UI 导出到 Web 应用程序?
- salesforce - Salesforce、LWC、Lightning 应用程序生成器、无法读取属性