【vue高频面试题—Vuex篇】:vuex中 mutations 和 actions 的区别

35 阅读2分钟

在 Vuex 中,mutationsactions 都是用于修改 store 中状态(state)的方法,但它们之间是有操作区别的:

Mutations

  1. 同步操作mutations 必须进行同步操作,它们是 Vuex 中唯一可以修改 state 的方法。
  2. 直接修改状态mutations 直接更改 store 中的状态,且必须是同步的,因为异步操作可能会导致状态更新的不确定性。
  3. 提交(Commit) :在组件中,你不能直接调用 mutations,而是需要通过 commit 方法来提交一个 mutation
  4. 严格性:Vuex 要求所有的状态更新必须通过 mutations 来完成,以保证状态更新的可追踪性。

Actions

  1. 异步操作actions 可以包含异步操作,它们通常用于执行异步任务,如 API 调用。
  2. 提交 Mutationsactions 可以通过 commit 方法提交 mutations 来间接修改 state。
  3. 调用其他 Actionsactions 可以调用其他 actions 或 mutations,这可以将复杂业务逻辑拆分到不同的 actions 中。
  4. 派发(Dispatch) :在组件中,需要通过 dispatch 方法来派发一个 action
  5. 处理业务逻辑actions 可以包含复杂的业务逻辑,并且可以处理多个 mutations 的提交。

总结

  • Mutations 是同步的,用于直接修改状态,是状态更新的唯一途径。
  • Actions 可以是异步的,用于执行异步操作和提交 mutations,不直接修改状态。

这种设计允许 Vuex 跟踪每一个状态的变化,使得状态变化更加可预测和易于调试。在实际开发中,通常会将异步逻辑放在 actions 中,而将同步的状态更新放在 mutations 中。这样可以保持状态更新的同步性,同时也使得异步逻辑更加集中和可管理。