Vuex的自我理解

单一状态树

Vuex使用单一状态树,用一个对象包含了全部的应用级状态。
作为一个唯一数据源SSOT而存在。这也意味着,每个应用将
仅仅包含一个store实例。
单一状态树让我们能够直接的定位任一特定的状态片段,在调试的
过程中也能轻易的取得整个当前应用状态的快照。

    new Vuex.store({
        state:{

        }
    })

单一状态树和模块化并不冲突

获得Vuex状态State

由于Vuex的状态存储是响应式的,从store实例中读取状态最简单
的方法就是在计算属性中返回某个状态。
然而这种模式导致逐渐依赖全局状态单例,在每个需要使用state的组件
中需要频繁的导入,并且在测试逐渐时需要模拟状态。
Vuex通过store选项,提供了一种机制将state从根组件注入到每一个
子组件中。
通过在根实例中注册store选项,该store实例会注入到根组件下的所有
之组件中,且子组件能通过this.$store实例访问到。

mapState函数

当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些
重复和冗余,我们可以使用mapState辅助函数帮助我们生成计算属性。

Getter

有时候我们需要从store中的state中派生出一些状态,Vuex允许我们在store
中定义getter,就像计算属性一样,getter的返回值会根据他的依赖被缓存起来,
且只有但他的依赖值发生了改变才会被重新计算。
Getter接受state作为第一个参数。
Getter会暴露为store.getter对象
Getter也可以接受其他getter作为第二个参数

Mutation

更改Vuex的store中的状态的唯一方法是提交mutation.Vuex中的mutation非常类似于
事件:每个mutation都有一个字符串的时间类型type和一个回调函数handler.这个回调函数
就是我们实际机型状态更改的地方,并且他会接受state作为第一个参数。
你不能直接调用一个mutation handler.这个选项更像是事件注册:当出发一个类型的mutation
时,调用此函数。要唤醒一个mutation handler,你需要以相应type调用store.commit方法。

提交载荷payload

你可以向store.commit传入额外的参数,即mutation的载荷payload
在大多数情况下,载荷应该是一个对象,这样可以包含多个字段并且记录的mutation会更易读。

使用常量替代mutation事件类型

使用常量替代mutation事件类型在各种flux种是很常见的模式,这样可以使用liner之类的工具发挥作用,同时
把常量放在单独的文件中可以让你的代码一目了然。

Mutation必须是同步函数

Action

Action类似于mutation,不同在于:
Action提交的是mutation,而不是直接变更状态state
Action可以包含任意异步操作
Action函数接受一个与store实例具有相同方法和属性的context对象,因此你可以调用
context.commit()提交一个mutation,或者通过context.state和context.getters来
获取state和getters,当我们在之后介绍到modules时

分发action

Action通过store.dispatch()方法触发。

Modules

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象,
但应用变得复杂时,store对象就会变得相当臃肿。
Vuex允许我们将store分割成模块modules,每个模块拥有自己的state,mutation,action,getter
甚至是子模块modules,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex是一个专为Vue.js应用程序开发的状态管理模式。它主要用于管理应用程序的状态,其中包括数据的获取、修改和同步,以及在不同组件之间共享数据。 Vuex的核心概念主要有以下四个: 1. State(状态):State是存储应用程序中所有组件共享的数据的地方,可以将它看作是应用程序的单一源 of truth(唯一数据源)。它类似于组件中的data属性,但是可以被多个组件共享。 2. Mutations(变更):Mutations是用来修改State的唯一方式。它们类似于事件,每个Mutation都有一个字符串类型的事件类型和一个回调函数。在回调函数中,我们可以对State进行修改。Mutations只能进行同步操作。 3. Actions(动作):Actions用于异步修改或触发Mutations。它们类似于Mutations,但是可以执行异步操作,并且可以包含任意的业务逻辑。Actions通过提交Mutations来间接修改State。 4. Getters(获取器):Getters用于从Store中获取State的派生状态,类似于计算属性。它们可以接收State作为第一个参数,并且可以接收其他Getters作为第二个参数,从而实现对State的复杂统计或过滤。 Vuex的使用步骤如下: 1. 安装Vuex:在Vue项目中使用npm或者yarn安装Vuex。 2. 创建一个Store:通过创建一个Store实例来管理应用程序的状态。在Store中定义State、Mutations、Actions和Getters。 3. 在Vue组件中使用State:通过this.$store.state来访问State中的数据。 4. 在Vue组件中使用Mutations:通过commit方法来触发Mutations中的回调函数,从而修改State。 5. 在Vue组件中使用Actions:通过dispatch方法来触发Actions中的回调函数,从而间接修改State。 6. 在Vue组件中使用Getters:通过this.$store.getters来访问Getters中的派生状态。 通过合理使用Vuex,我们可以更好地管理Vue.js应用程序的状态,并且实现组件间的数据共享和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值