import { defineStore } from 'pinia'; import { getC } from '../apis/usedcar'; export const useCounterStore = defineStore('counter', { state: () => { return { count: 66, convenientBrands: [], convenientModels: [], convenientPrices: [] }; }, // 计算属性 对仓库中的数据进行加工处理,生成新的数据, getters: {}, // 用来修改仓库中的数据,只能执行同步方法 mutations: { setData(state, payload) { for (const key in payload) { state[key] = payload[key] } } }, // 异步 actions: { async getCon() { const { data } = await getC(); const { convenientBrands, convenientModels, convenientPrices } = data.data; // 将获取到的数据存储到对应的 state 属性中 this.setData({ convenientBrands, convenientModels, convenientPrices }); } }, }); 以上代码 const { convenientBrands, convenientModels, convenientPrices } = data.data; // 将获取到的数据存储到对应的 state 属性中 this.setData({ convenientBrands, convenientModels, convenientPrices }); 太麻烦了 我想通过这个方法 mutations: { setData(state, payload) { for (const key in payload) { state[key] = payload[key] } } }来把数据添加到state里面对应的convenientBrands, convenientModels, convenientPrices 需要怎么做
时间: 2024-03-23 22:40:44 浏览: 74
如果你想通过 `setData` 方法来将数据添加到 `state` 中的 `convenientBrands`, `convenientModels` 和 `convenientPrices` 属性中,可以将 `payload` 参数改为一个对象,对象的属性名与 `state` 中的属性名相同,这样就不需要再使用 `for-in` 循环来遍历 `payload` 对象了。
修改后的 `setData` 方法如下所示:
```
mutations: {
setData(state, { convenientBrands, convenientModels, convenientPrices }) {
state.convenientBrands = convenientBrands;
state.convenientModels = convenientModels;
state.convenientPrices = convenientPrices;
}
}
```
然后在 `getCon` 方法中,调用 `setData` 方法时,将获取到的数据以对象的形式传入,属性名与 `state` 中的属性名相同即可。
修改后的 `getCon` 方法如下所示:
```
async getCon() {
const { data } = await getC();
const { convenientBrands, convenientModels, convenientPrices } = data.data;
this.setData({ convenientBrands, convenientModels, convenientPrices });
}
```
这样就可以直接将数据存储到对应的 `state` 属性中了。
阅读全文