zoukankan      html  css  js  c++  java
  • Vue.js入门(7)Vuex

    序言

    在人生的舞台上,每个人,都是一个演员。

    Vuex

    Vuex是Vue配套的公共数据管理工具,它可以把一些共享的数据,保存到vuex中,方便整个程序中的任何组件直接获取或修改我们的公共数据。

    Vuex是什么?

    在我看来vuex就是把需要共享的变量全部存储在一个对象里面,然后将这个对象放在顶层组件中供其他组件使用。

    这么说吧,将vue想作是一个js文件、组件是函数,那么vuex就是一个全局变量,只是这个“全局变量”包含了一些特定的规则而已。

    在vue的组件化开发中,经常会遇到需要将当前组件的状态传递给其他组件。父子组件通信时,我们通常会采用props + emit这种方式。

    但当通信双方不是父子组件甚至压根不存在相关联系,或者一个状态需要共享给多个组件时,就会非常麻烦,数据也会相当难维护,这对我们开发来讲就很不友好。

    核心概念

    State,Getter,Mutation,Action,Module

    Vuex 主要有四部分:

    1. state:包含了store中存储的各个状态。
    2. getter: 类似于 Vue 中的计算属性,根据其他getter或state计算返回值。
    3. mutation: 一组方法,是改变store中状态的执行者,只能是同步操作
    4. action: 一组方法,其中可以包含异步操作。实际上,action是提交mutation来改变状态的,它并不能自己改变状态。只有mutation才能改变状态。

    待整理

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

    这时我们可以将store分割为模块(module),每个模块拥有自己的 state 、 getters 、mutations 、actions 、甚至是嵌套子模块——从上至下进行同样方式的分割。

    https://segmentfault.com/a/1190000019077663

    https://www.cnblogs.com/chinabin1993/p/9848720.html

    理解Vuex

    官方文档的话就是:

    Vuex是一个专门为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件状态, 并以响应的规则保证状态以一种可预测的方式发生变化。

    大白话: Vuex就是为了data中需要共享的属性而专门开发的一个存储容器, 在这个容器中,我们把共享的值放入,就可以在所有的组件中获取,使用,操作。

    vuex包含五个基础对象:

    state:存储状态,也就是变量

    getters:派生状态。也就是set、get中的get,有两个参数

    mutations:提交状态修改。不支持异步操作,第一个参数默认是state。外部调用store.commit('')

    actions:异步操作,第一个参数默认是store

    modules:store的子模块,内容相当于是store的一个实例

    https://github.com/chinabin1993/Vuex

    https://www.cnblogs.com/songdongdong/p/7116605.html

    使用Vuex 报错 unknown action type:XXX(未知的操作类型:)

    vuex2.0 可以直接去store拿state了,那getters还有什么用?

    虽然上一条在组件内也可以做,但是getters 可以在多组件之间复用

    如果一个状态只在一个组件内使用,是可以不用getters

    vuex无法获取getters属性this.$store.getters.getCurChildId undefined

    https://blog.csdn.net/wo_921110/article/details/82697933

    资料

    谈谈个人对vuex的理解及用法

    https://vuex.vuejs.org/zh/

  • 相关阅读:
    视图容器组件使用
    组件的学习
    伸展树
    二叉搜索树
    二叉树
    笛卡尔树
    二叉堆
    vim配置
    使用vim-pathogen 进行插件管理
    C/C++中的变量和静态变量
  • 原文地址:https://www.cnblogs.com/cnki/p/13235313.html
Copyright © 2011-2022 走看看