首選查閱官方文檔 深入了解響應式編程
vue 變化檢測原理使用 Object.defineProperty 把這些屬性全部轉為 getter/setter
Vue 不允許在已經創建的實例上動態添加新的根級響應式屬性 (root-level reactive property)
然而它可以使用 Vue.set(object, key, value) 方法將響應屬性添加到嵌套的對象上:
this.$set(this.someObject,'b',2)
有時你想向已有對象上添加一些屬性,例如使用 Object.assign() 或 _.extend() 方法來添加屬性。但是,添加到對象上的新屬性不會觸發更新。在這種情況下可以創建一個新的對象,讓它包含原對象的屬性和新的屬性:
// 代替 `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })
首先使用 vuex state 如果設置默認值也可以檢測到的
但是一旦使用 未知 state就無法檢測到變更
- 解決思路 設置未知state為一個空對象,你會發現 TMD還是不能檢測到
- 突發奇想 在建立了對象后再設置一個默認值
this.$store.commit('setState', [`${this.spm}Content`, {}])
this.$store.commit('setState2', [`${this.spm}Content`, 'isShow', false])
具體頁面
// 先設置data數據
getContent:this.$store.getters.getState(`${this.spm}Content`)
// 設置計算屬性
computed:{
content:function(){
let obj = Object.assign({}, this.getContent)
return obj
}
好了 你可以愉快的使用了
打個小廣告
自己根據原理寫的迷你的vue 用于整合到jq
https://www.npmjs.com/package/min-vue
沒事點個小星星什么的