Vue项目中如何使用vuex
这篇文章主要介绍“Vue项目中如何使用vuex”,在日常操作中,相信很多人在Vue项目中如何使用vuex问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue项目中如何使用vuex”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、vuex状态共享树
以前我们进行数据的共享,使用的是自定义事件,自定义属性,eventBus,全局事件总线,pubsub等,以上的方式只能在小范围内进行数据共享,对于大范围以及频繁的数据共享来说,不太使用,尤其是在大型项目中的体验感不佳
1.什么是Vuex
Vuex是实现组件全局状态(数据)管理的-种机制,可以方便的实现组件之间数据的共享。
2.vuex的优点
能够在vuex中集中管理共享的数据,易于开发和后期维护
能够高效地实现组件之间的数据共享,提高开发效率
存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步
3.什么时候使用vuex
一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;对于组件中的私有数据,依旧存储在组件自身的data中即可。
二、Vuex的基本使用
①安装 vuex 依赖
npmi vuex--save
②导入 vuex 包
importVuexfrom'vuex'
Vuex.use(Vuex)
③创建 store 对象
const store=new Vuex.store({//state中存放的就是全局共享的数据state:{count:0}})
④将 store 对象挂载到 vue 实例中
new vue({el:'#app',render:h=>h(app),router,//将创建的共享数据对象,挂载到Vue实例中//所有的组件,就可以直接从store中获取全局的数据了store})
三、Vuex的核心概念
四个vuex节点
1.State
State提供唯一的公共数据源,所有共享的数据都要统-放到Store的State中进行存储。
//创建store数据源,提供唯一-公共数据conststore=newVuex.store({state:{count:0}})
组件中使用共享数据的第一种方式
this.$store.state.数据变量名
组件中使用共享数据的第二种方式
从vuex中按需导入mapState函数
import{mapState}from'vuex'导入mapState函数
通过刚才导入的mapState函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性
computed:{...mapState(['变量名'])}
2.Mutation
Mutation 用于变更Store中的数据。vuex只能通过mutation变更Store数据,不可以直接操作Store中的数据。通过这种方式虽然操作起来稍微繁琐- -些,但是可以集中监控所有数据的变化。
exportdefaultnewVuex.Store({state:{count:0},mutations:{//定义mutationadd(state){state.count++}}})//组件中使用methods:{add(){//触发mutationthis.$store.commit('add')}}
可以在触发mutations时传递参数
export default new Vuex.Store({state:{count:0},mutations:{addN(state,step){//变更状态state.count+=step}}})//组件中使用methods:{add(){//触发mutation时携带参数//commit的作用,就是调用某个mutation函數this.$store.commit('addN',3)}}
mutations第二种使用方式
this. $store.commit() 是触发mutations的第一种方式,触发mutations的第二种方式
//1.从vuex中按需导入mapMutations函数import{mapMutations}from'vuex'
通过刚才导入的mapMutations函数,将需要的mutations函数,映射为当前组件的methods方法
//2.将指定的mutations函数,映射为当前组件的methods函数methods:{...mapMutations(['sub'])}
3.Action
Action用于处理异步任务。如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据。
export default new Vuex.Store({state:{count:0},mutations:{add(state){state.count++},actions:{addAsync(context){setTimeout(()=>{context.commit('add')},1000)}},})//组件中使用methods:{addAsync(){这里的dispatch函数,专门用来触发actionthis.$store.dispatch('addAsync')}}
4.Getter
Getter用于对Store中的数据进行加工处理形成新的数据。
Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。
Store中数据发生变化,Getter 的数据也会跟着变化。
定义Getter
export default new Vuex.Store({state:{count:0},getters:{showNum(state){return'当前最新的数量是:'+state.count}}
调用 Getter
使用getters的第一种方式
this.$store.getters.名称
使用getters的第二种方式
import{mapGetters}from'vuex'computed:{...mapGetters(['showNum'])}
到此,关于“Vue项目中如何使用vuex”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341