javascript - 如何通过操作更改 Vuex 存储对象值?(vue.js)
问题描述
我将状态中的数据存储为数组,我想更改对象的值。如何使用 vuex 操作将 id 1 值更改为 true?
state.js
const array=[]
突变.js
storeArray(state, data) {
state.array = data;
}
动作.js
async changeValue({ state, dispatch, commit }, id) {
const item = await state.array[id].value;
await commit('storeArray', { value: true });
},
数组看起来像
[{
id: "1",
value: 'false'
}, {
id: "2",
value: 'true'
}]
解决方案
您需要事先知道 id 以及新数组的值。要在状态数组中查找和更改所需的对象,您可以使用以下示例中的突变:
const store = new Vuex.Store({
state: {
objects: [{ id: 1, value: true }, { id: 2, value: true }]
},
mutations: {
changeObjectValue (state, { id, value }) {
const found = state.objects.find(item => item.id === id);
found.value = value;
},
},
});
这样你就可以像这样在一个动作中提交:
store.commit('changeObjectValue', {id: 2, value: false});
在plnkr上查看此示例
推荐阅读
- anglesharp - 在 AngleSharp c# 或 vb 中循环父节点内的子节点
- kubernetes - kubernetes container_name 在 fluentdconfiguration 中为空
- java - 当密钥在php中为整数时,java的解密密钥是什么
- django-2.0 - 如何在 Django 3.1 中添加“模板”和“静态”文件夹
- powerbi - 如何使用 DAX 计算 Power BI 中每个类别和仅选定项目的百分比
- selenium - ExtentHtmlReporter 无法创建 report.html
- html - 如何在输入文件标签 ReactJS 中重新分配保存的文件
- linux - 运行 Docker 脚本时未找到文件,但在另一个 Docker 脚本中找到了文件
- javascript - 为什么存储在firestore中的数据没有在react中获取?
- eclipse - 如何将 eclipse 项目迁移到 atmel-studio?