Vuex 文档解读

Vuex 管理状态

state 

单一状态树,意思是一个对象包含了全部应用层级状态,Store将作为唯一数据源。

每个应用,仅仅有且只有一个 store 实例!

mapState

当一个组件组件组件需要多个状态值时,可以调用 mapState函数赋值给 computed 返回是对象。

// mapState 基本用法,3种: 箭头函数, 字符串, 函数.

computed:mapState({

      //1,箭头函数 countFromStore:state=>state.count

      //2,字符串  countFromStore: ‘count‘     等价于   state=>state.count

      //3,函数  需要使用组件内数据访问this时,还可以用函数

countFromStore(state) {

return state.count+this.localCount;

}

}),


// 如果同名取Store中的值,可以取count字符串放在数组中传递给 mapState.

computed:mapState([

‘count‘    // 可以访问多个状态

]),

// mapState返回对象所以可以扩展computed对象.

computed: {

       ...mapState([     

         ‘count‘

       ]),

       localCount() {return this.localCount + this.$store.state.count;}

}

getters

可以吧 getters 当作是 state store的计算属性,传参是state .

Vue.use(Vuex);

conststore=newVuex.Store({

state: {

   count:1,

   name:‘NewStation‘,

   todos: [

      { id:1, text:‘todos -1‘, done:true },

      { id:2, text:‘todos -2‘, done:false },

   ]

},

mutations: {       // this.$store.commit(‘changeName‘) 触发commit更新store

    increment(state) {

        state.count++

    },

    changeName(state) {

         state.name=‘NewPlace‘

     }

},

getters: {           //  this.$store.getters.doneTodos  获取getters编译后的值

    doneTodos:state=> {

         returnstate.todos.filter(todo=>todo.done)[0].done;

    },

    doneState: (state, getter)=> {

         return  getter.doneTodos + ‘getter 作为其他 getter 的传参;

    }

}

});

mapGetters

辅助函数,,支持2种方式转换,把store中的getters 可以支持传参,映射到局部计算属性。

computed: {

...mapGetters([    数组

      ‘doneTodos‘,                               // 可以直接调用

]),

...mapGetters({    对象

       aliasFillname:‘getFillName‘  //给 getter 加别名。

}),

}

Mutation

更新 store状态 的唯一方法是提交mutation。 Vuex中的 mutation 类似于事件:每个 mutation 都有自己的事件类型和回调函数,这个回调函数就是我们状态更改的地方,并接受 state 作为第一个参数

const store = new Vuex.Store({

 state: {

   count: 1

 },

 mutations: {

   increment (state) {

     // 变更状态

     state.count++

   }

 }

})

store.commit(‘increment‘)   只能用这个方式修改状态!

触发mutation更新状态,触发一个叫 increment 类型的事件,并回调执行 这个类型的注册函数

提交负载Payload

可以给commit传参,称为 Payload负载,通常是一个对象。

this.$store.commit(‘increment‘,   { account: ‘local‘ })

对象的风格提交

只给mutation传递对象,表示整个对象被当做 Payload,被解析,mutation中获取的方式是不变的。

this.$store.commit({

     type: ‘increment‘,

     account: ‘local‘

})

Mutation需遵守vue响应规则

1,提前在store中初始化所有有声明的属性值

2,获取对象值之后,如需修改推荐调用 Vue.set (obj, ‘newkey‘, ‘newvalue‘) 或者 这样 {...obj, newProp: 123}

store的对象放在前。

3,推荐使用常量const方式命名mutation中事件的类型名,也可以不用。

Mutation必须是同步函数

Store 对生命周期的影响

初始阶段

就是组件实例化和mounted的过程,和从data或props中取值并没有区别。

App                      ---beforeCreate--

App                      ---created---

App                      ---beforeMount---

Helloworld           ---beforeCreate--

Helloworld           ---created---

Helloworld           ---beforeMount---

Helloworld           ---mounted---

App                      ---mounted---

store的state更新阶段

App                      ---beforeUpdate---

Helloworld              ---beforeUpdate---

Helloworld              ---updated---

App                      ---updated---

原文地址:https://www.cnblogs.com/the-last/p/11391731.html

时间: 2024-11-02 22:33:49

Vuex 文档解读的相关文章

Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便写下这篇博客心得 Google API:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html#terms 其实大家要学习Android的技术,Google的API就是最详细的指导书了,而且通俗易懂,就算看不懂

vuex文档(附加个人理解)

Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel调试.状态快照导入导出等高级调试功能. 反正我是懵懵的,没太看懂他有什么用. (- ̄▽ ̄)- 什么是"状态管理模式"? 让我们从一个简单的 Vue 计数应用开始: new Vue({ // sta

Spring MVC 指导文档解读(一)

22.1 指导文档章节 In the Web MVC framework, each DispatcherServlet has its own WebApplicationContext, which inherits all the beans already defined in the root WebApplicationContext. 解读 一. DispatcherServlet 可以定义多个 二. root WebApplicationContext 适用于所有的 Dispat

linux账号相关文档解读

1.passwd解读:这个档案是这样构造的,每一行代表一个账号,有几行就代表有几个账号,里面有好多账号是系统正常运行所必须的,如bin,daemon,adm等,路径/etc/passwd eg:root:x:0:0:root:/bin/bash 每一行用:分开,共七段,分别是: 1)账号名称,用来对应UID 2)密码:早起Unix系统直接在这里存放密码,但因为这个档案所有程序都能够读取,这样一来容易造成密码数据被窃取,因此这个字段的密码数据的被放到/etc/shadow中了 3)UID:使用者的

Spring MVC 指导文档解读(二)

Special Bean Types In the WebApplicationContext 解读 1.WebApplicationContext 特有的几种 Bean Types 2. 也表明 与之相对的 还有 ApplicationContext 下面这几种特有的 web bean types 也理应定义到 web 的上下文配置文件中,比如 a-servlet.xml Table 22.1. Special bean types in the WebApplicationContext B

vuex最简单、最详细的入门文档

vuex最简单.最详细的入门文档 如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 . 我在使用基于 vue.js 2.0 的UI框架 ElementUI 开发网站的时候 , 就遇到了这种问题 : 一个页面有很多表单 , 我试图将表单写成一个单文件组件 , 但是表单 ( 子组件 ) 里的数据和页面 ( 父组件 ) 按钮交互的时候 , 它们之间的通讯很麻烦 : <!--父组件中引入子组件--> <template> <div> <a

支付宝接口程序、文档及解读(ASP.NET)

支付宝接口程序.文档及解读(ASP.NET) 最近需要为网站加入支付宝的充值接口,而目前关于支付宝接口开发的资料比较杂乱,这里就我此次开发所用到的资料进行汇总整理,希望能够帮助需要的朋友. 开发步骤: 1. 确定签约类型 支付宝的接口有多种类型,所以首先你要确定签约的合同类型,确定使用的是哪个接口,不至于走错了道道. 此步骤中,可以参考文档:支付宝接口操作教程 2. 下载开发文档 如果是即时到账的开发,请先下载并仔细阅读:标准快速付款接口文档 文档中比较详细的介绍了逻辑流程,时序图以及枚举定义等

Mongoose学习参考文档——基础篇

Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //

HTML5实战 文摘 第一章 从文档到应用的转变

1. HTML5的基本特性 1.1 DOCTYPE声明方式 HTML5的声明格式非常简单不需要DTD和URL <!DOCTYPE html> 就这么一句声明放在文档的开头就可以了. 1.2 新的元素 增加新的元素代表新的语义,例如,新增加了<hgroup>标签,这个标签用于对网页或区段(section)的标题进行组合.再例如<nav>标签,它定义了网站导航的链接.有了类似这种新的元素,页面标记结构不仅清晰易读,搜索引擎机器人和辅助技术也能比较好的解读页面的内容. 1.3