creamidea / creamidea.github.com

冰糖火箭筒&&蜂蜜甜甜圈
https://creamidea.github.io/
4 stars 4 forks source link

Vuex 的一张图 #29

Open creamidea opened 3 years ago

creamidea commented 3 years ago

image

其实这个图依然是 MVC 相关的知识,还是和 binding 相关。远程数据如何和本地的视图进行交互,更一般的,用户的操作如何反馈到视图上?这一层的 binding 在 Mutations 里面声明。

查看 Mutations 相关的 API,可以发现就是和浏览器 Event 一样的概念:事件 + 实现。事件是 Mutations 里函数的名称,实现是 Mutations 里函数的实现。另外,Mutations 暴露出 commit 方法,通过该方法触发相关事件,进而修改内部的 State。为了降低概念和实现的复杂度,Mutations 里面的实现要求是同步的操作,修改 State 和渲染 View 被安排在同一个操作(tick)里面,而不是被分拆成异步。

那如何进行异步更新呢?通过 Action,所有异步的逻辑在 Action 里面实现。Action 的接口中有 Mutations 暴露的 commit 方法,当动作需要修改状态时调用 commit。定义好的 Action 通过 Dispatch 进行分发。

其它的概念