import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex); /*1.state在vuex中用于存储数据*/
var state={ count:1,
list:[]
} /*2.mutations里面放的是方法,方法主要用于改变state里面的数据
*/
var mutations={ incCount(){ ++state.count;
},
addList(state,data){ state.list = data;
}
} /*3、优点类似计算属性 , 改变state里面的count数据的时候会触发 getters里面的方法 获取新的值 (基本用不到)*/ var getters= { computedCount: (state) => {
return state.count*2
}
} /*
4、 基本没有用 Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。
*/ var actions= {
incMutationsCount(context) { /*因此你可以调用 context.commit 提交一个 mutation*/ context.commit('incCount'); /*执行 mutations 里面的incCount方法 改变state里面的数据*/ }
} //vuex 实例化 Vuex.store 注意暴露
const store = new Vuex.Store({
state,
mutations,
getters,
actions
}) export default store;
<template>
<!-- 所有的内容要被根节点包含起来 -->
<div id="home" style="padding:20px;">
我是首页组件 -- {{this.$store.state.count}} ----{{this.$store.getters.computedCount}} <button @click="incCount()">增加数量+</button> </div>
</template> <script> //1. 引入store 建议store的名字不要变 import store from '../vuex/store.js'; //2.注册
export default{
data(){
return {
msg:'我是一个home组件',
value1: null, }
},
store,
methods:{
incCount(){
//改变vuex store里面的数据 //this.$store.commit('incCount'); /*触发 mutations 改变 state里面的数据*/ this.$store.dispatch('incMutationsCount'); /*触发 actions里面的方法 */
}
}
} </script> <style lang="scss" scoped> </style>
<template>
<div id="news">
我是新闻组件 --{{this.$store.state.count}} <br> <button @click="incCount()">增加数量</button> <br><br>
<br><br> <ul>
<li v-for="item in list"> {{item.title}}
</li>
</ul> </div> </template> <script>
//1. 引入store import store from '../vuex/store.js'; export default{
data(){
return {
msg:'我是一个新闻组件',
list:[] }
},
store,
methods:{ incCount(){ this.$store.commit('incCount');
}, requestData(){ //请求数据 var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1'; this.$http.get(api).then((response)=>{
console.log(response); //注意this指向 this.list=response.body.result; //数据放在store里面 this.$store.commit('addList',response.body.result); },function(err){ console.log(err); })
}
},mounted(){ //判断 store里面有没有数据
var listData=this.$store.state.list; console.log(listData.length); if(listData.length>0){
this.list=listData; }else{ this.requestData(); } }
} </script> <style lang="scss" scoped> .list{ li{
height:3.4rem; line-height:3.4rem; boder-bottom:1px solid #eee; font-size:1.6rem; a{ color:#666; }
}
} </style>

Vuex 的使用 State Mutation Getter Action的更多相关文章

  1. 挑战全网最幽默的Vuex系列教程:第二讲 Vuex旗下的State和Getter

    先说两句 上一讲 「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨).如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄 ...

  2. vuex mutation,action理解

    1. 在store中分别注册mutation和action,action中用commit同步调用mutation来执行修改state,但是在组件中则使用dispatch异步调用action 2. 通俗 ...

  3. vuex2.0 基本使用(2) --- mutation 和 action

    我们的项目非常简单,当点击+1按钮的时候,count 加1,点击-1按钮的时候,count 减1. 1, mutation The only way to actually change state ...

  4. 【14】vuex2.0 之 mutation 和 action

    我们的项目非常简单,当点击+1按钮的时候,count 加1,点击-1按钮的时候,count 减1. 1, mutation The only way to actually change state ...

  5. (转)vuex2.0 基本使用(2) --- mutation 和 action

    我们的项目非常简单,当点击+1按钮的时候,count 加1,点击-1按钮的时候,count 减1. 1, mutation The only way to actually change state ...

  6. vuex 源码解析(三) getter属性详解

    有时候我们需要从store中的state中派生出一些状态,例如: <div id="app"> <p>{{reverseMessage}}</p> ...

  7. vue常见问题处理 -- 页面刷新时,如何保持原有vuex中的state信息

    一.页面刷新时,如何保持原有vuex中的state信息 页面刷新后,原有的 vuex 中的 state 会发生改变,如果在页面刷新之前,可以将 state 信息保存,页面重新加载时,再将该值赋给 st ...

  8. vuex 之既生‘mutation’何生‘action’

    vuex 中,action 及 mutation 均为操作数据的作用而存在,既然二者均可改变数据,为什么要分成两个方法来处理呢,因为: Mutation 必须是同步函数 mutations: { so ...

  9. vuex中mutation和action的详细区别

    const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } ...

随机推荐

  1. 一个在开源中国博客上讲解的AC自动机

    原文出处:http://my.oschina.net/amince/blog/196426 原 荐 AC(Aho—Corasiek) 多模式匹配算法 摘要 如何在一篇文章中,搜索多个关键字,如何快速查 ...

  2. Spark-2.3.2 Java SparkSQL的自定义HBase数据源

    由于SparkSQL不支持HBase的数据源(HBase-1.1.2),网上有很多是采用Hortonworks的SHC,而SparkSQL操作HBase自定义数据源大多数都是基于Scala实现,我就自 ...

  3. xss获取cookie源码附利用代码

    保存为cookie.asp <% testfile=Server.MapPath("cookies.txt") msg=Request("msg") se ...

  4. document.ready与window.onload的区别

    代码分析: $(document).ready(function() { .... }); window.onload=function(){ ....} 两段代码功能上可以互换,但又有许多区别: 1 ...

  5. maven中profile的使用

    转载:https://blog.csdn.net/java_collect/article/details/83870215 前言       在开发过程中,我们的项目会存在不同的运行环境,比如开发环 ...

  6. 3D-2D透视投影数学推导

    请尊重作者,禁止私自盗用图片!

  7. Java - 框架之 SpringBoot 攻略day01

          Spring-Boot 攻略 day01 spring-boot   一. 基本配置加运行   1. 导入配置文件(pom.xml 文件中)   <parent> <gr ...

  8. C 语言程序设计

    C 语言数据类型: 整数: char(也是字符型) short int long 浮点型: float double 指针 自定义类型 输入输出格式化: int ->%d long ->% ...

  9. 运算符的应用及流程控制if,switch语句

    运算符的应用 1:赋值运算符    简单赋值运算符        例如var useName='tom';//简单赋值运算符    复合赋值运算符        a+=b;//相当于a=a+b;   ...

  10. 给各阶段java学习者的建议[转]

    第一部分:零基础或基础薄弱的同学这部分主要适用于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学.一.Java基础首先去找一个Java的基础教程学一下,这里可以推荐达内java课 ...