为了账号安全,请及时绑定邮箱和手机立即绑定

一个vuex state中的数据存取问题

/ 猿问

一个vuex state中的数据存取问题

qq_笑_17 2018-08-29 14:43:24

vuex的结构是这样的

export default new Vuex.Store({

    state:{

        projects:[],

    },

    getters:{

        getAllProjs(state){

            return state.projects;

        },

        getProjectNamesById(state){

            return state.projects.map( proj => proj.name )

        }

    },

    mutations:{

        pushProjectsToStore(state,data){

            state.projects = data;

        },

    },

    actions:{

        pushProjectsToStore(){

            

        }

    }

})

父组件创建时

beforeCreate(){
      this.$queryProject().then( res => this.$store.commit('pushProjectsToStore',res.data) )
  },

子组件实例化时

mounted () {  
  //   获取项目信息
      this.projects = this.$store.getters.getAllProjs;    
      this.projectNamesById = this.$store.getters.getProjectNamesById;
  },

然后现在有个问题,getAllProjs执行时机是在pushProjectsToStore之前,所以拿不到数据,请问如何解决


查看完整描述

2 回答

?
123456qqq

computed: {

...mapGetters(["getAllProjs","getProjectNamesById"])

},
watch:{

getAllProjs(newVal,oldVal){
    console.log('vuex 中上一次的值',oldVal);
    console.log('vuex 中更新后的值',newVal);
},
getProjectNamesById(newVal,oldVal){

}

}


查看完整回答
反对 回复 2018-09-09
?
富国沪深

建议子组件中直接用计算属性有修改的话就直接更新了,不然还要去监听vuex变更,更麻烦

computed: {
  projects() { 
     return this.$store.getters.getAllProjs
  },
  projectNamesById() { 
     return this.$store.getters.getProjectNamesById;
  }
},


查看完整回答
反对 回复 2018-09-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信