Vue.js那是真为前端开发者着想,如同当年的jQuery,多学一个知识点,就能少写一行代码,这句话完全可以用于Vue.js身上,下面说说在Vue.js2.6新版本中新增的东西Vue.observable( object ),这货能替代你以前的一些数据状态管理方案,当然,我并不是说vuex就没用了,就被完全替代了。
1 2 3 4 5 6 7 8 9 |
返回的对象可以直接用于渲染函数和计算属性内,并且会在发生改变时触发相应的更新。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <template> <div> <p>你点+-,看我能不能根据状态去动态改变</p> <label for="bookNum">数量</label> <button @click="setCount(count+1)">+</button> <span>{{count}}</span> <button @click="setCount(count-1)">-</button> </div> </template> <script> import { store, mutations } from '../store/store' // Vue2.6新增API Observable export default { name: 'Add', computed: { count () { return store.count //用于去渲染之前Observable中定义的变量count } }, methods: { setCount: mutations.setCount } } </script> |
无意在网上看到的,觉得真心不错,有机会可以在一般项目中去尝试,vuex你还得单独配置装插件,做配置,这个东西就是内置的,我觉得尤雨溪大佬可能是借鉴了小程序类似这种全局状态管理,小程序不就也有一个全局状态globalData么。并且它相比较我们之前说到的$emit/$on这种兄弟组件数据传递方式类似,但明显更简洁。
官方强调,在 Vue 2.x 中,被传入的对象会直接被 Vue.observable 改变,所以如这里展示的,它和被返回的对象是同一个对象。在 Vue 3.x 中,则会返回一个可响应的代理,而对源对象直接进行修改仍然是不可响应的。因此,为了向前兼容,我们推荐始终操作使用 Vue.observable 返回的对象,而不是传入源对象。
针对上面官方说的这段话,我做了测试,2.6中发现在组件中是可以直接修改源对象,即可以直接去修改observable上的count,整个数据是响应的。可能我理解错了官方想表达的意思。
下一篇:浅谈Vue.js中v-text,v-html,{{}}之间的异同
支付宝扫一扫打赏
微信扫一扫打赏
共 0 条评论关于"Vue.js替代vuex全局状态共享store的方案Observable-组件通信"
最新评论