Vuex 和 Pinia 都是 Vue.js 的状态管理库,但它们在设计理念和使用方式上有显著区别。以下是两者的主要差异:
Vuex
state → mutations → actions)。 mutations 修改状态。 actions 提交 mutations。Pinia
mutations,允许直接在 actions 中处理同步和异步逻辑。 Vuex
Pinia
Vuex
modules 划分模块,每个模块需定义 state/mutations/actions/getters,嵌套结构可能复杂。Pinia
Vuex
state、mutations、actions、getters,模板代码较多。 // Vuex 示例
const store = {
state: { count: 0 },
mutations: {
increment(state) { state.count++ }
},
actions: {
incrementAsync({ commit }) { commit('increment') }
}
};
Pinia
ref/reactive 定义状态,合并 mutations 到 actions。 // Pinia 示例
export const useCounterStore = defineStore('counter', {
state: () => ({ count: 0 }),
actions: {
increment() { this.count++ }, // 同步
async incrementAsync() { this.count++ } // 异步
}
});
Vuex
Pinia
setup() 语法。Vuex
Pinia
Vuex
Pinia
热门推荐:
0