今天来整理下 vuex 的,由于都是自己理解,哪里出错还希望各位指出!
首先来聊聊 Vuex
与 Redux
的,首先他们都是基于 Flux 的实现,Vuex
只是针对 Vue
量身开发的,而 Redux
不止单单在 React
上可使用。
首先对 Vuex
的 API 你必须懂,最起码会使用,看下面这张图:
接下来我们翻看看源码:
入口:
// mixin.js
export default function (Vue) {
// 省略非关键代码
/*Vuex的init钩子,会存入每一个Vue实例等钩子列表*/
function vuexInit () {
// this.$options就是vm实例上的$options
const options = this.$options
// store injection
// 判断vm options上是否有store实例
if (options.store) {
// 判断是否是root节点、如果是 那么直接执行 function
this.$store = typeof options.store === 'function'
? options.store()
: options.store
} else if (options.parent && options.parent.$store) {
// 子组件直接从父组件获取store,这就保证了所有组件只有一个store,也就是单一数据流, 保证状态的唯一特性
this.$store = options.parent.$store
}
}
}
Store:
来看看 store
源码:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于