现在Web应用的都是有三大组件构成:组件、数据和路由。
今天重点学习相关的数据流的问题,场景:组件直接共享数据,该如何实现?
最常见的思路:专门设计一个全局变量,任何组件需要数据的时候在全局变量中取。
存在的问题:无法自动更新页面,因为全局变量存储的变量不是响应式的。需要使用ref和reactive去把数据据包裹成响应式数据据,并且提供统一的操作方法。
引出Vuex,管理我们的项目数据,集中式存储管理应用的所有组件的状态。
什么时候的数据使用Vuex管理,什么时候的数据要放在组件内部使用ref管理呢?
对于一个数据,若只用组件内部使用就用ref管理,若是需要跨组件、跨页面共享,需要把数据从Vue的组件内部抽离处理,放在Vuex中管理。
Vue的组件负责渲染页面,组件中用到跨页面的数据,是用state来存储的,但是Vue不能直接修改state,而是要通过actions/mutations去做数据的修改。
在决定是否使用Vuex来管理数据时,核心就是这个数据是否有共享给其他页面或是组件的需求。若需要,就放置在Vuex中管理,否则,放在组件内部使用ref或reactive管理。
Vuex结构图