关于vuex的使用,以及了解

state:所有的公用数据都放在state中。要想使用,直接调用state

修改state

一:改变state中的数据,不能直接让组件修改,必须走流程:如果有异步操作或者复杂的同步操作,直接将操作放在actions中,组件先调用actions(使用dispath方法),然后调用mutations(使用commit方法)。mutations中放着一个一个的同步对state的修改。

二:当没有任何的异步操作,操作非常简单,不是批量的数据操作时,可以略过调用actions   直接调用mutations来改变state的值。


安装:

npm install vuex --save

vuex的简单使用:

一:使用state中的值

this.$store.state.name

二:改变state中的值 

方法一:

组件中写:(组件中用dispatch调用actions中的方法)

this.$store.dispatch("changeName",name)

actions中写:(actions中紧接着用commit调用mutations中的方法)

changeName(ctx,name){
    ctx.commit("changeName",name)
}

mutations中写:(mutations中就可以改变state中的值)

changeName(state,name){
    state.name = name
}

方法二:(当没有任何的异步操作,操作非常简单,不是批量的数据操作时,可以使用方法二)

组件中写:(没有复杂的操作,可以略过actions方法,直接用commit调用mutations中的方法)

this.$store.commit("changeName",name)

mutations中写:(mutations中就可以改变state中的值)

changeName(state,name){
    state.name = name
}

vuex的高阶使用:

一:在组件中使用state中的值

mapState是指把vuex中的数据映射到组件中computed的计算属性里(即:将公用数据name映射到组件的名字叫name的计算属性中)

this.name
import {mapState} from 'vuex'
export default {
    computed:{
        ...mapState(['name'])
    }
}

一:改变state中的值 

有一个mutations为changeName,把mutations映射到组件中的名字叫做changeName方法里。

import {mapMutations} from 'vuex';

methods:{
    handleNameClick(city){
        this.changeName(city)
    },
    ...mapMutations(['changeName'])
}

mutations中写:(mutations中就可以改变state中的值)

changeName(state,name){
    state.name = name
}

其他

getters的使用:

vuex中的getters的作用类似于组件中computed的计算属性。当我们需要根据state中的数据算出一些新的数据时,可以借助使用getters。这样可以避免数据的冗余。

在组件中使用

在vuex中写

moudle的使用

猜你喜欢

转载自blog.csdn.net/yangdl6/article/details/114664849