vuex中mutations怎么拿到getter的数据
时间: 2024-10-22 19:16:18 浏览: 25
Vuex中的`mutations`主要是用于处理状态(state)的更新,它们是纯函数,不能直接访问到store中的其他数据,包括getters获取的数据。但是,你可以通过在mutation处理函数内部调用getters来间接地使用getter获取的数据。
例如:
```javascript
// getters.js
export const getUser = state => state.user;
// mutations.js
import { getUser } from '@/store/getters';
export const updateUserName = (state, payload) => {
// 在这里可以先调用getter获取用户信息
const user = getUser(state);
// 然后对user进行操作并更新state
state.user.name = payload.newName;
};
```
在这个例子中,`updateUserName` mutation会先从`getUser` getter中获取当前用户的详细信息,然后根据传入的payload更新用户名。
如果你需要在某个地方长期依赖于getters的数据,通常建议在actions里获取并缓存,然后在mutations中使用这个已缓存的数据。
```javascript
// actions.js
export const updateUser = ({ commit }, payload) => {
const user = getUser();
commit('updateUserName', payload, { root: true }); // 将用户数据传递给mutation
};
// mutations.js
export const updateUserName = (state, payload, { rootState }) => {
state.user.name = payload.newName; // 使用rootState中的数据
};
```
阅读全文