郑州机械网站制作,中国平湖首页规划建设局网站,网站建设设计原则,wordpress新建页面没有内容Vuex 是 Vue.js 的一个状态管理模式和库#xff0c;为应用中的所有组件提供了一个集中式的存储管理#xff0c;并提供了一种强大的方式来管理应用的状态。Vuex 包含以下核心概念#xff1a; State#xff1a;定义了应用的状态#xff0c;类似于组件中的 data。 Getters为应用中的所有组件提供了一个集中式的存储管理并提供了一种强大的方式来管理应用的状态。Vuex 包含以下核心概念 State定义了应用的状态类似于组件中的 data。 Getters用于访问 State 中的状态并进行计算或转换。 Mutations用于修改 State 中的状态必须是同步操作。 Actions用于提交 Mutations可以是异步操作。
为了更好地组织项目代码我们通常将 Vuex 的不同概念如 state、mutations、actions、getters写在不同的文件中以便于维护和管理。下面是一个示例文件结构
├── store/
│ ├── state.js
│ ├── mutations.js
│ ├── actions.js
│ ├── getters.js
│ └── index.js
└── App.vuestate.js 文件定义了应用的状态mutations.js 文件定义了修改状态的 mutationsactions.js 文件定义了提交 mutations 的 actionsgetters.js 文件定义了获取状态的 gettersindex.js 文件则将这些文件中的内容整合到一个 Vuex 实例中以便于在应用程序中使用。
下面是一个示例代码
state.js
export default {count: 0
}mutations.js
export default {increment (state) {state.count},decrement (state) {state.count--}
}actions.js
export default {incrementCount ({ commit }) {commit(increment)},decrementCount ({ commit }) {commit(decrement)}
}getters.js
export default {getCount: state state.count
}index.js
import Vue from vue
import Vuex from vuex
import state from ./state
import mutations from ./mutations
import actions from ./actions
import getters from ./gettersVue.use(Vuex)export default new Vuex.Store({state,mutations,actions,getters
})在上面的例子中我们将不同概念分别写在了不同的文件中。最后在 index.js 中将它们整合到一个 Vuex 实例中并导出。然后在 Vue.js 应用程序中使用
App.vue
templatedivpCount: {{ count }}/pbutton clickincrementCountIncrement/buttonbutton clickdecrementCountDecrement/button/div
/templatescript
import { mapGetters, mapActions } from vuexexport default {computed: {...mapGetters([getCount]),count () {return this.getCount}},methods: {...mapActions([incrementCount,decrementCount])}
}
/script在组件中我们可以使用 mapGetters 和 mapActions 函数来访问状态和提交 mutations。注意我们需要将 getCount 映射到 count 计算属性中以便在模板中使用。
我们先使用 mapState 辅助函数将 state 中的 count 映射为组件中的计算属性 count在模板中使用 count 即可获取 state 中的 count。然后我们使用 mapMutations 辅助函数将 increment mutations 映射为组件中的 methods 中的 increment 方法这样我们在 increment 方法中调用 increment mutations 即可修改 state 中的 count。最后我们使用 mapActions 辅助函数将 incrementAsync actions 映射为组件中的 methods 中的 incrementAsync 方法这样我们在 incrementAsync 方法中调用 incrementAsync actions 即可异步修改 state 中的 count。