关于vuex的使用

72 阅读1分钟

getters的使用

1.概念:当state中的数据需要经过加工后再使用时,可以使用getters加工

2.在store.js中追加getters配置

......
const getters={
    bigSum(state){
        return state.sum*10
    }
}

//创建并暴露store
export default new Vuex.store({
    ......
    getters
})

3.组件中读取数据: $store.getters.bigSum

四个map方法的使用

1.mapState方法:用于帮助我们映射state中的数据为计算属性

import {mapState} from 'vuex'
//组件页面
computed:{
//借助mapState生成计算属性,sum、school(对象写法)
    ...mapState({sum:"sum",school:"school"}),
    
//借助mapState生成计算属性,sum、school(数组写法) 
    ...mapState([sum,school]}),
}

2.mapGetters方法:用于帮助我们映射getter中的数据为计算属性

//组件页面
computed:{
//借助mapGetters生成计算属性,bigSum(对象写法)
    ...mapGetters({bigSum:"bigSum"}),
    
//借助mapGetters生成计算属性,bigSum(数组写法) 
    ...mapGetters([bigSum]}),
}

2.mapActions方法:用于帮助我们生成与actions对话的方法,即:包含$store.dispatch(xxx)的函数

//组件页面

<button @click='incrementOdd(value)'>加</button>
<button @click='incrementWait(value)'></button>
......

data(){
    return{
        value:1
    }
}
methods:{
    //靠mapActions生成,incrementOdd、incrementWait(对象形式)
    ...mapActions({incrementOdd:'incrementOdd',incrementWait:'incrementOdd' })

    //靠mapActions生成,incrementOdd、incrementWait(数组形式)
    ...mapActions(['incrementOdd','incrementOdd'])
 }

2.mapMutations方法:用于帮助我们生成与mutations对话的方法,即:包含$store.commit(xxx)的函数

//组件页面

<button @click='incrementOdd(value)'>加</button>
<button @click='incrementWait(value)'></button>
......

data(){
    return{
        value:1
    }
}
methods:{
    //靠mapMutations生成,incrementOdd、incrementWait(对象形式)
    ...mapMutations({incrementOdd:'incrementOdd',incrementWait:'incrementOdd' })

    //靠mapMutations生成,incrementOdd、incrementWait(数组形式)
    ...mapMutations(['incrementOdd','incrementOdd'])
 }

备注:mapActions与mapMutations使用时,若要传参需要在模板中绑定事件时传递好参数,否则参数是事件对象