Vuex研究ノート--- 4つのキングコング州、ゲッター、ミューテーション、アクション

状態

新しいstore.jsファイルを作成し、デフォルトのパッケージをエクスポートして、外部が参照できるようにします

//定义一个常量
const state = {
    
    
        count:1
    }

//
export default new Vuex.Store({
    
    
        state
    })

Vueページ参照

    <template>
         <h3>{
    
    {
    
    $store.state.count}}</h3>//1
    </template>
    <script>
        import store from '@/vuex/store'
        export default{
    
    
            data(){
    
    
                return{
    
    
                }
            },
            store

        }
    </script>

省略形、実際のプロジェクトでより多く使用

    <template>
         <h3>{
    
    {
    
    count}}</h3>//1
    </template>
    <script>
        import {
    
    mapState} from '@/vuex/store'
        export default{
    
    
            data(){
    
    
                return{
    
    
                }
            },
			computed:{
    
    
				...mapState(['count'])
			}
        }
    </script>

ゲッター

単純な理解は、状態データを取得する前にデータを処理し、処理後に戻ることです。

//这里每次获取count前会加上1
const getters = {
    
    
        count:function(state){
    
    
            return state.count+=1;
        }
    }
    //
export default new Vuex.Store({
    
    
        state,getters
    })

ページ参照

    <template>
         <h3>{
    
    {
    
    count}}</h3>//2
    </template>
    <script>
        import {
    
    mapGetters} from '@/vuex/store'
        export default{
    
    
            data(){
    
    
                return{
    
    
                }
            },
            //注意,这里放在计算属性里
			computed:{
    
    
				...mapGetters(['count'])
			}
        }
    </script>

突然変異

これは状態を変更するために使用され、簡単な理解は状態の値を変更することです

    const mutations={
    
    
        add(state,num){
    
    
            state.count=num;
        },
        reduce(state){
    
    
            state.count-=1;
        }
    }
    export default new Vuex.Store({
    
    
        state,getters,mutations
    })

ページ参照

    <template>
         <h3>{
    
    {
    
    count}}</h3>//2=》10,点击下边按钮修改为10
         <button @click="addCount(10)">-</button>
    </template>
    <script>
        import {
    
    mapGetters,mapMutations} from '@/vuex/store'
        export default{
    
    
            data(){
    
    
                return{
    
    
                }
            },
            //注意,这里放在计算属性里
			computed:{
    
    
				...mapGetters(['count'])
			}
            //注意,这里放在methods里
			methods:{
    
    
				...mapMutations({
    
    
					addCount: 'add',//左边为自定义方法名,右边对应store.js的mutations里方法名
				})
			}
        }
    </script>

行動

アクションはミューテーションと同じです。どちらもストア内の状態を変更しますが、アクションは非同期であり、ミューテーションを同期する必要があります。

    const actions ={
    
    
        addAction({
    
    commit}){
    
    //直接把commit对象传过来
            commit('add')//方法名和mutation里定义的一样
        }reduceAction({
    
    commit}){
    
    
            commit('reduce')
        }
    }
    export default new Vuex.Store({
    
    
        state,getters,mutations,actions
    })

ページ参照

    <template>
         <h3>{
    
    {
    
    count}}</h3>//2=》10,点击下边按钮修改为10
         <button @click="addAction(10)">-</button>
    </template>
    <script>
        import {
    
    mapGetters,mapMutations,mapActions} from '@/vuex/store'
        export default{
    
    
            data(){
    
    
                return{
    
    
                }
            },
            //注意,这里放在计算属性里
			computed:{
    
    
				...mapGetters(['count'])
			}
            //注意,这里放在methods里
			methods:{
    
    
				...mapMutations({
    
    
					addCount: 'add',//左边为自定义方法名,右边对应store.js的mutations里方法名
				}),
				...mapActions([
					'addAction',
					'reduceAction'
				])
			}
        }
    </script>

おすすめ

転載: blog.csdn.net/Wonder_BBJ/article/details/108360948