- 在Vuex的actions中发起网络请求并存储结果到state:
- 首先在actions中引入网络请求库,例如
axios
。假设我们有一个获取用户信息的请求。
- 在
actions
对象中定义一个方法,比如fetchUserInfo
:
import axios from 'axios';
const actions = {
async fetchUserInfo({ commit }) {
try {
const response = await axios.get('/api/userInfo');
commit('SET_USER_INFO', response.data);
} catch (error) {
console.error('Error fetching user info:', error);
}
}
};
- 这里使用
async/await
语法来处理异步操作。await
等待axios
的get
请求完成,然后通过commit
调用mutation
(SET_USER_INFO
)将请求到的数据(response.data
)提交。
- mutation的作用:
mutation
是Vuex中唯一可以直接修改state
的地方。它的设计原则是保证状态变化的可追踪性和原子性。
- 在
mutations
对象中定义SET_USER_INFO
方法,如下:
const mutations = {
SET_USER_INFO(state, userInfo) {
state.userInfo = userInfo;
}
};
- 这个
mutation
接收state
和从action
中commit
过来的userInfo
数据,然后直接修改state
中的userInfo
属性,将网络请求获取的数据合理地存储到state
中。这样,整个应用的其他组件就可以通过mapState
等方式获取并使用这个数据。