其他分享
首页 > 其他分享> > 利用vuex进行组件之间传递参数

利用vuex进行组件之间传递参数

作者:互联网

记一次vue学习笔记(第一次写博客)

目的:
通过collapsed参数控制 ant-design layout的菜单收起和打开
问题:
把layout 拆分多个组件后,组件之间的参数传递,尝试过用$emit和props,感觉不太理想
查了好多资料,最后决定用vuex


import Vue from 'vue'
import Vuex from 'vuex'
import layout from "@/store/modules/layout/layout";


Vue.use(Vuex)

const debug = process.env.NODE_ENV !== 'production'

const store = new Vuex.Store({
        modules: {
            layout
        },
        strict: debug

    })
export default store

store中layout 的内容

const state = {
    collapsed: false
}

const actions = {
    setCollapsed(context:any,value:boolean){
        context.commit('setCollapsed',value)
    }
}

const mutations = {
//修改值
    setCollapsed(state: any, value: boolean) {
        state.collapsed = value
    }
}
const getters = {
    getCollapsed(state:any){
       return  state.collapsed
    }
}
export default {
    state,
    actions,
    mutations,
    getters
}

组件A的内容(只写了js代码)

//。。。。省略部分代码
   <a-icon
                    class="trigger"
                    :type="collapsed ? 'menu-unfold' : 'menu-fold'"
                    @click="()=> collapsed = !collapsed"
            />
 //。。。。省略部分代码
<script>
    export default {
        name: "Header",
        computed:{//利用计算属性获取和修改store中的值
            collapsed:{
                get(){
                    return this.$store.getters.getCollapsed
                },
                set(){
                    this.$store.dispatch('setCollapsed',!this.collapsed)
                }
            },
        },
    }
</script>

组件B的内容(只写了js代码)

//。。。。省略部分代码
    <a-layout-sider
            :trigger="null"
            collapsible
            v-model="collapsed"
            breakpoint="lg"

    >
    //。。。。省略部分代码
<script>

    export default {
        name: "Sider",
        computed:{
            collapsed:{
                get(){
                    return this.$store.getters.getCollapsed
                },
                set(){
                    this.$store.dispatch('setCollapsed',!this.collapsed)
                }
            }
        },
    }
</script>

心得:
本人写后端的,刚学vue,没什么前端基础(如果jq算的话当我没说),感觉这个vue是挺神奇的,总的来说 还是挺难的。

标签:layout,collapsed,setCollapsed,state,参数,组件,const,vuex,store
来源: https://blog.csdn.net/qq_36456875/article/details/100604244