vue-vuex-state响应式

  vuex的store对象的state是响应式,凡是预先在state中定义的状态,都会被加入到响应式系统中,当状态发生了变化,所有引用状态的vue文件的template都会随之发生变化,做到响应式的功能。刚才也说了,提前定义好的会被加入到响应式系统中,那后面追加的属性或对象能不能加入到响应式系统中呢?答案是 如果按照指定的方式来添加和删除属性,是可以做到响应式的。

  比如现在我要添加一个新属性height,用两种方式添加,如下:

  方式1:此种方式能添加state中对象的属性,但无法加入到响应式系统中,即页面上不会显示出来,实际上确实存在了这个属性

  mutations: {
    addheight(state){
      state.stus[0]['height'] = 168
    }
  }

  方式2:此方式可以让属性加入到响应式系统中

  mutations: {
    addheight(state){
      Vue.set(state.stus[1],'height',178) //参数一为对象,参数二为key,参数为value
    }
  }

  说完添加属性,再说下删除吧,想要删除属性并加入响应式系统,如下方式:

  mutations: {
    delheight(state){
      Vue.delete(state.stus[1],'height') //参数一为对象,参数二是key
    }
  }

  来个总图:

 

posted @ 2021-04-10 14:59  爱编程DE文兄  阅读(856)  评论(0编辑  收藏  举报