vuex store 使用

vuex store 使用

import { mapState, mapMutations,mapActions,mapGetters } from 'vuex'; // 引入vuex的方法,用于使用辅助函数

state => 使用的变量管理器,称作状态树,是一个单一的状态,只能通过vuex注册的方法进行改变
使用:this.$store.state,或者使用 mapState

mutations => 必须是同步函数,接受 state 作为第一个参数,并接受调用时传入的参数(称作载荷Payload)。更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。
使用:this.$store.commit('xxx') 调用 mutations,或者使用 mapMutations,还有一种使用type属性的方法=> store.commit({type: 'increment',amount: 10}),这种方法会将整个对象都作为载荷传给 mutation 函数

actions => Action 类似于 mutation,区别于可以执行异步操作,例如在此进行请求后数据处理。可以在此处提交mutation(actions修改state的方法是提交mutation).
使用:this.$store.dispatch('xxx') 分发 action,或者使用 mapActions
组合 Action:store.dispatch('actionA').then(() => {})

还可以在另一个action中注册另一个异步方法,返回一个异步的函数,那么我们在调用actionB时同样可以等待异步进程then:
actionB ({ dispatch, commit }) {
    return dispatch('actionA').then(() => {
      commit('someOtherMutation')
    })
}
当我们需要队列时,应该使用es7方法 async / await

getters => 类似于state,但是他是以方法的形式返回数据,可以用于数据处理结果直接展示,例如对列表进行过滤并计数。可以认为是 store 的计算属性,接受 state 作为第一个参数,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
使用:this.$store.getters.doneTodos调用getters函数,或者使用mapGetters辅助函数。


// 引入vuex中注册的方法,方法调用应该放在生命周期的methods中引入
methods: {
		...mapMutations(['setLogin'])
		...mapActions(['setLogin'])
}
// 引入vuex中的状态管理器,state只可以读取,不能直接修改,如果需要修改需要注册一个方法去修改,这个数值会根据store中的改变而改变,因此可以采用watch监听数据变化。getters返回的是处理后的state数据。
computed: {
	...mapState(['login']),
	...mapGetters(['doneTodosCount'])
}

我们应该提前在store中初始化好所有所需属性,当需要在对象上添加新属性时应该使用Vue.set(obj, 'newProp', 123)方法,或者使用state.obj = { ...state.obj, newProp: 123 }
我们多人协作时应采用mutation-types.js管理方式管理我们的store,由于我们的团队成员较少以及小程序体量的局限性,包括项目对store的使用率过低的情况不采用此方式增加项目体积。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然!下面是一个简单的示例,展示了如何设置和使用 Vuex Store。要使用 Vuex,你需要先安装 Vuex 库。 首先,确保你的项目中已经安装了 Vuex。你可以通过以下命令使用 npm 安装 Vuex: ``` npm install vuex ``` 安装完成后,在你的应用程序的入口文件(通常是 `main.js`)中引入 Vuex,并创建一个新的 Vuex Store 实例: ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++ } }, actions: { increment(context) { context.commit('increment') } }, getters: { getCount: (state) => { return state.count } } }) // 将 store 注入到根实例中 new Vue({ store, // ... }).$mount('#app') ``` 在上面的代码中,我们首先引入了 Vue 和 Vuex。然后,我们使用 `Vue.use(Vuex)` 方法来安装 Vuex 插件。 接下来,我们创建了一个新的 Vuex Store 实例,其中包含了状态(state)、变更(mutations)、动作(actions)和获取器(getters)。 - `state`:存储应用程序的状态数据。 - `mutations`:用于同步更改状态数据的方法。 - `actions`:用于处理异步操作和触发 mutations 的方法。 - `getters`:用于从 store 中派生出一些状态。 最后,我们将创建的 store 注入到根 Vue 实例中,这样就可以在整个应用程序中访问和使用store。 现在,你可以在组件中通过 `this.$store` 访问 Vuex Store,并使用 `this.$store.state` 来获取状态,使用 `

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值