4.vuex

1.Vuex 是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。

全局静态资源管理库

2.什么情况下我应该使用 Vuex?

虽然 Vuex 可以帮助我们管理共享状态,但也附带了更多的概念和框架。这需要对短期和长期效益进行权衡。

如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。

3.解决了什么问题?

当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:会衍生出下面的问题

1.多个视图依赖于同一状态。

2.来自不同视图的行为需要变更同一状态。

3.传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。

4.我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。

4.都有哪些状态管理对象?分别什么作用。

1.store 其实就是一个厂库,里面存储着整个项目的大部分状态,并且vuex与全局的对象存储还是存在差异的

2.vuex的存储是动态响应式的 , 组件从store仓库中读取状态之后,若仓库中的store状态发生变化,那么对应的组件状态也会得到及时的更新,提现到视图页面上。

3.store中的状态改变只能通过固定的渠道改变, 改变状态的唯一途径就是提交(commit)通过对象(mutation),这样就方便我们通过一些工具跟踪到store状态的改变 及时的监听整个项目的运行情况

4.State(单一状态树)

    (1)用一个对象包含整个应用层级的状态

    (2)作为唯一的数据源存在

    (3)每一个应用智能存在一个store实例

5.getter(store的计算属性)

    (1)getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

    (2)Getter 接受 state 作为其第一个参数

    (3)Getter 会暴露为 store.getters 对象

    (4)Getter 也可以接受其他 getter 作为第二个参数(整个getter的计算属性都可以拿到)

6.mutation

    (1)更改 Vuex 的 store 中的状态的唯一方法

    (2)store状态的改变在这里进行

7.Action 

   (1) Action 提交的是 mutation,而不是直接变更状态。

    (2)Action 可以包含任意异步操作。

    (3)store状态不在这里改变这里起到唤醒mutation  的作用

8.module

    由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。

为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割

9mapState(辅助函数)

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

10.mapActions

    暴露出Action 对象注册的方法便于在vue组件中使用。

你可能感兴趣的:(4.vuex)