Vuex 中的 Getter、State、Actions 流程及通信方式

64 阅读1分钟

在 Vuex 中,Getter、State、Actions 共同协作,实现了状态管理和组件之间的通信。

State(状态)
State 用于存储应用的全局状态数据,例如用户信息、购物车内容等。它是 Vuex 存储数据的核心部分。
例如,state: { user: { name: '张三', age: 25 }, cartItems: [] }

Getter(获取器)
Getter 可以对 State 中的数据进行计算和处理,然后返回一个新的值。它类似于计算属性,用于对 State 进行派生和筛选。
比如,假设有一个 totalPrice 的 Getter 用于计算购物车中商品的总价:

getters: {
  totalPrice: (state) => {
    return state.cartItems.reduce((total, item) => total + item.price * item.quantity, 0);
  }
}

Actions(动作)
Actions 用于处理异步操作和复杂的业务逻辑,它可以提交 Mutations 来更改 State。
例如,从服务器获取用户数据的 Action:

actions: {
  fetchUserData({ commit }) {
    axios.get('/api/user').then(response => {
      commit('SET_USER', response.data);
    });
  }
}

组件通信

  • 父子组件通信:父组件可以通过 props 向子组件传递数据,子组件通过 $emit 触发事件向父组件传递数据。

  • 隔代组件通信:可以通过父组件作为中间桥梁,将数据传递给子组件,或者使用 Vuex 来管理共享状态。

  • 兄弟组件通信:同样可以借助父组件中转数据,或者利用 Vuex 实现状态共享。

通过合理运用 Vuex 的这些特性,可以更有效地管理应用的状态和实现组件之间的通信,使代码结构更加清晰和可维护。