vuex store 存储数据是不是要在action里存储
时间: 2023-10-13 17:52:23 浏览: 87
在 Vuex 中,通常情况下,我们会在 action 中进行异步操作或业务逻辑处理,并通过提交 mutation 来更改 state 中的数据。
存储数据的操作通常是在 mutation 中进行的,而不是在 action 中。因为 mutation 是同步的,而 action 是用于处理异步操作的。
以下是一个示例,展示了在 Vuex 中存储数据的典型流程:
1. 在 state 中定义需要存储的数据:
```javascript
state: {
data: null
}
```
2. 在 mutation 中定义更改 state 的方法:
```javascript
mutations: {
setData(state, payload) {
state.data = payload;
}
}
```
3. 在 action 中进行异步操作,并通过提交 mutation 来更改 state 的数据:
```javascript
actions: {
fetchData(context) {
// 模拟异步请求数据
setTimeout(() => {
const data = { foo: 'bar' };
context.commit('setData', data);
}, 1000);
}
}
```
在上面的示例中,我们在 `setData` mutation 中将接收到的 `payload` 数据更新到 state 的 `data` 属性中。
而在 `fetchData` action 中,我们模拟一个异步操作,例如发送网络请求来获取数据。然后,在异步操作完成后,通过调用 `context.commit` 方法来提交 `setData` mutation,以更改 state 中的数据。
总结来说,存储数据的操作应该在 mutation 中进行,而不是在 action 中。action 应该用于处理异步操作、调用 API、触发 mutation 等。
阅读全文