vuex整理

Vuex

定义:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

简单的说:
      Vuex就是创建了一个状态库,将各组件之间数据存在状态库中,
      将组件与组件之间的通信变成了组件与状态之间通信

在这里插入图片描述

state:用来定义多组件之间的共享状态

Mutations:用来修改state数据,只能在Mutations中更改vuex状态

actions:用来定义一个方法在实例中进行异步请求

getters:相当于计算属性,当我们得到state的值之后,使用getters,将这些基本的值进行组合加工,得到我们需要的值

let store = new Vuex.Store({  
    state:{ //就是用来定义多组件之间的共享状态
        isTabbarShow:true,
        cinemaList:[...]
    },
    mutations:{
        show(state){
            state.isTabbarShow = true
        },
        hide(state){
            state.isTabbarShow = false
        }
    },
    getters:{  //类似于computed计算属性 只不过里面的数据依赖于vuex的状态
        getCinemaListFive(state){
            return state.cinemaList.slice(0,5)
        },
    },
    actions:{
        xxAsync(context){
            axios.get().then(res=>{
                context.commit("方法",参数)
			}
		}
    }
})

created(){
    this.$store.commit("hide")   //commit调用mutations方法
    console.log(this.$store.state.isTabbarShow)  //获取state中的数据
    console.log(this.$store.dispatch("xxAsync"))  //获取异步请求的数据
    console.log(this.$store.getters.getCinemaListFive)  //获取getters方法得到的数据
}

vuex辅助函数

mapState,mapGetters,mapActions,mapMutations

mapState

mapState这个辅助函数就是为了方便获取vuex中的状态,本来获取状态 this.$store.state.xxx,使用辅助函数后直接使用this.xxx调用即可。

mapGetters

这个辅助函数与mapState的用法一模一样

mapActions

这个辅助函数用法与上面一致,但是需要定义在methods里面

created(){
    if(this.cinemaList.length === 0){
      // this.$store.dispatch("cinema/getCinemaListAction")
      this.getCinemaListAction()
    }
  }
mapMutations

这个辅助函数用法与上面一致的用法

import {mapState,mapGetters,mapMutations,mapActions} from "vuex"
methods:{   //mapMutations,mapActions要放在methods中
    ...mapActions("cinema",["getCinemaListAction"]),
    ...mapMutations("tabbar",["show","hide"]),
}
computed:{  //mapState,mapGetters要放在computed中
    ...mapGetters(["getCinemaListFive"]),
    ...mapState(["cinemaList"]), 
}
created(){
		console.log(this.cinemaList)
		this.getCinemaListAction()
}

后续如果你的computed中有跟vuex的同名的,需要通过这种方式设置

 ...mapState({
     aaa:state=>state.cinemaList
 }),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值