什么是"状态管理模式"? 让我们从一个简单的Vue计数APP演示开始:
newvue((/statedata ) ) return ) count: )、//viewtemplate3360 ) div ) {count}/div )、/actionsmethood
state,驱动APP应用程序的数据源; 将view、state声明性地映射到视图;actions、view中的根据用户输入的状态变化进行响应。 简单的状态管理启动
当访问Vue APP应用程序中原始数据对象的实际源数据对象时,一个vue实例可能只是简单的代理访问。 因此,如果存在需要在多个实例之间共享的情况,则可以通过维护数据轻松共享。
constsourceoftruth={ } const VMA=newvue { data : sourceoftruth } } constvmb=newvue { data 3360 sourceoftruth } }当前为3360 现在有了唯一的数据源,但调试会成为噩梦。 无论何时,在我们的APP应用程序的任何部分,无论什么数据发生更改,都不会保留更改的记录。
更改sourceOfTruth时,vmA和vmB现在都会自动更新参考视图。 子组件的每个实例也可通过this.$root.$data进行访问。 现在有了唯一的数据源,但调试会成为噩梦。 无论何时,在我们的APP应用程序的任何部分,无论什么数据发生更改,都不会保留更改的记录。
为了解决这个问题,我们使用了简单的sourceOfTruth
var store={ debug: true,state: { message: 'Hello!' 、setmessageaction(newValue ) if ) this.debug ) console.log ) setmessageactiontriggeredwith )、newValue ) this )、 newvalue clearmessageaction((if ) this.debug ) console.log ) (clearmessageactiontriggered ) this.state.message=如果发生了错误,我们现在也有记录错误之前发生了什么的log。
此外,每个实例/组件仍然可以拥有和管理其自己的专用状态。
varVMA=newvue(data: ) privatestate: )、sharedstate:store.state} ) varVMB=newvue ) data3360 ) prrate