美文网首页
vuex公共组件传值

vuex公共组件传值

作者: 秀萝卜 | 来源:发表于2020-05-20 09:01 被阅读0次

    https://www.jianshu.com/p/fc167402d1ad

    业务场景重现
    现在我的App.vue里面有一个头部的公共组件,头部组件里有一个输入框,当我输入词条时,将词条传进App.vue里的<router-view>里的.vue页面,并进行查询获取数据
    解决思路如下:

    1.如何拿到头部的词条
    2.当词条改变时如何触发.vue里的请求数据事件
    解决方案
    我是用vuex数据仓库来存储词条的,当词条改变时,修改数据仓库里的词条
    然后在.vue页面里监听这个词条,当词条改变时触发请求数据的事件

    代码
    数据仓库store.js

    import Vue from 'vue'
    import Vuex from 'vuex'

    Vue.use(Vuex)

    export default new Vuex.Store({
    state: {
    searchKey: '' //存储词条的变量
    },
    mutations: { //修改数据仓库的事件
    changeSearchKey(state,value){
    state.searchKey = value
    }
    },
    actions: { //推荐使用的异步修改数据仓库
    setSearchKey(context,value){
    context.commit('changeSearchKey',value)
    }
    }
    })
    App.vue里的header组件

    goSearch: function(){
    if(this.value){
    this.$store.dispatch('setSearchKey',this.value) //当输入词条时,将词条更新到数据仓库
    }
    },
    vue页面里监听词条

    computed: {                     //监听词条
        getSearchKey(){
            return this.$store.state.searchKey
        }
    },
    watch: {
        getSearchKey: {
            handler(newValue,oldValue){  //当词条改变时执行事件
                this.recordis(newValue)
                // console.log('new',newValue)
                // console.log('old',oldValue)
            }
        }
    
    },
    

    相关文章

      网友评论

          本文标题:vuex公共组件传值

          本文链接:https://www.haomeiwen.com/subject/vqsnectx.html