指南
基础
- 安装
- 介绍
- Vue 实例
- 模板语法
- 计算属性和侦听器
- 类和样式绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
组件深入
- 组件注册
- 道具
- 自定义事件
- 插槽
- 动态和异步组件
- 处理边缘情况
过渡和动画
- 进入/离开和列表过渡
- 状态过渡
可重用性和组合
- 混入
- 自定义指令
- 渲染函数和 JSX
- 插件
- 过滤器
工具
- 单文件组件
- 测试
- TypeScript 支持
- 生产部署
扩展
- 路由
- 状态管理
- 服务器端渲染
- 安全
内部机制
- 深入响应性
迁移
- 从 Vue 1.x 迁移
- 从 Vue Router 0.7.x 迁移
- 从 Vuex 0.6.x 迁移到 1.0
- 迁移到 Vue 2.7
元数据
- 与其他框架的比较
- 加入 Vue.js 社区!
- 认识团队
状态管理
官方类 Flux 实现
大型应用程序通常会随着复杂性的增加而变得更加复杂,因为多个状态片段散布在许多组件中,以及它们之间的交互。为了解决这个问题,Vue 提供了 vuex:我们自己的受 Elm 启发的状态管理库。它甚至集成到 vue-devtools 中,提供零配置访问 时间旅行调试。
面向 React 开发者的信息
如果您来自 React,您可能想知道 vuex 与 redux(该生态系统中最流行的 Flux 实现)相比如何。Redux 实际上是与视图层无关的,因此可以通过 简单的绑定 轻松地与 Vue 一起使用。Vuex 的不同之处在于它知道它在 Vue 应用程序中。这使它能够更好地与 Vue 集成,提供更直观的 API 和改进的开发体验。
从头开始的简单状态管理
人们常常忽略 Vue 应用程序中真相的来源是原始的 data
对象 - Vue 实例只是代理对它的访问。因此,如果您有一个应该由多个实例共享的状态片段,您可以通过身份共享它
|
现在,每当 sourceOfTruth
被修改时,vmA
和 vmB
都会自动更新它们的视图。这两个实例中的子组件也可以通过 this.$root.$data
访问。我们现在有一个单一的真相来源,但调试将是一场噩梦。任何数据都可以被应用程序的任何部分在任何时间更改,而不会留下任何痕迹。
为了帮助解决这个问题,我们可以采用存储模式
|
请注意,所有修改存储状态的操作都放在存储本身中。这种集中式状态管理使我们更容易理解可能发生哪些类型的修改以及它们是如何触发的。现在,当出现问题时,我们还将拥有导致错误发生的日志。
此外,每个实例/组件仍然可以拥有和管理自己的私有状态
|
需要注意的是,您永远不应该在操作中替换原始状态对象 - 组件和存储需要共享对同一个对象的引用,以便观察到修改。
当我们继续发展组件永远不允许直接修改属于存储的状态,而是应该分派事件通知存储执行操作的约定时,我们最终会到达 Flux 架构。这种约定的好处是,我们可以记录发生在存储上的所有状态修改,并实现高级调试助手,例如修改日志、快照和历史记录回滚/时间旅行。
这让我们回到了 vuex,所以如果您已经读到这里,也许是时候尝试一下了!