Vuex使用记录 1.在Vue2.x中使用 import Vuex from ‘vuex’ /* 引入Vuex / Vue.use(Vuex) / 安装插件 / / 实例化Vuex */ const store = new Vuex.Store({ state: {

count: 0

}, mutations: {

increment (state) {
  state.count++
}

} }) /* 挂载到所有组件 */ new Vue({ el: ‘#app’, store: store, })

2.在Vue3.x中使用 import { createApp } from ‘vue’ import { createStore } from ‘vuex’ /* 创建一个新的 store 实例 */ const store = createStore({ state () {

return {
  count: 0
}

}, mutations: {

increment (state) {
  state.count++
}

} }) const app = createApp({ /* 根组件 / }) / 将 store 实例作为插件安装 */ app.use(store)

3.辅助函数 mapState、mapGetters、mapActions、mapMutations

…mapActions([

'some/nested/module/foo',  /* -> this['some/nested/module/foo']()*/
'some/nested/module/bar'   /*-> this['some/nested/module/bar']()*/

]) /* 可以在第一个参数中传递模块名,简写 */ …mapActions(‘some/nested/module’, [

'foo', /* -> this.foo() */
'bar' /* -> this.bar()*/

])

4.学习

Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT)”而存在。 Vuex的对象可以用过use注入vue应用,成为所有组件的store属性。也可以单独引入这个对象,单独使用。 Vuex的所有方法中,this指向Vuex对象。

5.state(状态/数据) computed: mapState([ /映射 this.count 为 store.state.count/ ‘count’ ])

6.getter(state的计算属性?) getters: {

doneTodos: (state) => {
  return state.todos.filter(todo => todo.done)
}

}

7.mutation(事件,由commit触发) store.commit(‘increment’) …mapMutations({

add: 'increment' /*将 `this.add()` 映射为 `this.$store.commit('increment')`*/

})

8.action(异步处理状态,由dispatch触发) actions: { increment ({ commit }) {

commit('increment')

} } /* 参数解构 */ actions: {

checkout ({ commit, state }, products) {
}

}

9.模块分割 Module const moduleA = { state: () => ({ … }), mutations: { … }, actions: { … }, getters: { … } } const moduleB = { state: () => ({ … }), mutations: { … }, actions: { … } } const store = createStore({ modules: {

a: moduleA,
b: moduleB

} }) store.state.a /* -> moduleA 的状态 / store.state.b / -> moduleB 的状态 */

10.项目结构说明 11.组合式API使用 this.$store 12.订阅 订阅 store 的 mutation。handler 会在每个 mutation 完成后调用,接收 mutation 和经过 mutation 后的状态作为参数

订阅 store 的 action。handler 会在每个 action 分发的时候调用并接收 action 描述和当前的 store 的 state 这两个参数。 subscribe 方法将返回一个 unsubscribe 函数,当不再需要订阅时,应调用该函数。

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。