项目代码结构↓

src内容↓

store内容↓

理解思路: component中的组件发送修改请求,由action.js处理请求,mutation修改请求,修改请求后state改变,从getter.js中可获取更新后的state中的数据。

state.js中为初始数据

  1. const state={
  2. count:0
  3. };
  4.  
  5. export default state;

action.js中的内容

  1. import * as types from './types';
  2.  
  3. const actions={
  4. increment:({
  5. commit,state
  6. },payload)=>{
  7. // alert(payload);
  8. payload=payload||1;
  9. commit(types.INCREMENT,payload);
  10. },
  11. decrement:({
  12. commit,state
  13. })=>{
  14. commit(types.DECREMENT);
  15. },
  16. async:({
  17. commit,state
  18. })=>{
  19. setTimeout(()=>{//请求数据
  20. commit(types.INCREMENT);
  21. },1000);
  22. },
  23. odd:({
  24. commit,state
  25. })=>{
  26. if(state.count % 2 == 0){
  27. commit(types.INCREMENT);
  28. }
  29. }
  30. };
  31.  
  32. export default actions;

mutation.js的内容

  1. import {
  2. INCREMENT,
  3. DECREMENT
  4. } from './types';
  5.  
  6. const mutations={
  7. [INCREMENT]:(state,payload)=>{
  8. // alert(payload);
  9. payload=payload||1;
  10. state.count+=payload;
  11. },
  12. [DECREMENT]:(state)=>{
  13. state.count--;
  14. }
  15. };
  16.  
  17. export default mutations;

type.js的内容

  1. export const INCREMENT='INCREMENT'; //加 描述
  2. export const DECREMENT='DECREMENT'; //减 描述

getter.js的内容

  1. const getters={
  2. count:(state)=>{
  3. return state.count;
  4. }
  5. };
  6.  
  7. export default getters;

在App.vue(或其他组件)中获取、修改state中的状态↓

  1. <template>
  2. <div id="app">
  3. <h1>vuex</h1>
  4. <input type="button" value="+" @click="increment(2)">
  5. <input type="button" value="-" @click="decrement">
  6. <input type="button" value="异步+" @click="async">
  7. <input type="button" value="偶数+" @click="odd">
  8. <br/>
  9. 越过getters向state拿:{{$store.state.count}}
  10. <br/>
  11. {{count}}/{{count%2==0?'双数':'单数'}}
  12. <br/>
  13. <input type="button" value="修改私有数据" @click="check">
  14. <br/>
  15. {{n}}
  16. </div>
  17. </template>
  18.  
  19. <script>
  20. import {mapActions,mapGetters} from 'vuex';
  21. export default {
  22. name: 'app',
  23. data () {
  24. return {
  25. n:0
  26. }
  27. },
  28. methods:{ // 私有方法和 请求并存
  29. check(){
  30. this.n='bmw';
  31. },
  32. ...mapActions(
  33. ['increment','decrement','async','odd']
  34. )
  35. },
  36. computed:mapGetters(
  37. ['count']
  38. ),
  39.  
  40. mounted(){
  41. //代码里面直接发请求 actions
  42. // this.$store.dispatch('increment',121);
  43.  
  44. //代码里面直接发请求 mutations
  45. // this.$store.commit('INCREMENT',['apple','banana','orange','西游记']);
  46.  
  47. }
  48. }
  49. </script>
  50.  
  51. <style>
  52.  
  53. </style>

  

vuex使用示例的更多相关文章

  1. 超简单入门Vuex小示例

    写在前面 本文旨在通过一个简单的例子,练习vuex的几个常用方法,使初学者以最快的速度跑起来一个vue + vuex的示例. 学习vuex需要你知道vue的一些基础知识和用法.相信点开本文的同学都具备 ...

  2. vuex简单示例

    一.vuex是什么,解决了什么问题? 官方解释是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生 ...

  3. vue全家桶+Koa2开发笔记(1)--vuex

    1.  安装webpack的问题: webpack坑系列--安装webpack-cli 2.  vue-cli(vue脚手架)超详细教程 3.  在命令行中使用 touch 执行新建文件: 4.  关 ...

  4. 通俗理解vuex原理---通过vue例子类比

    本文主要通过简单的理解来解释下vuex的基本流程,而这也是vuex难点之一. 首先我们先了解下vuex的作用 vuex其实是集中的数据管理仓库,相当于数据库mongoDB,MySQL等,任何组件都可以 ...

  5. vuex的简单例子和vue model组件

    好久没用过vuex了,vuex官方示例的计算器counter是用的webpack打包了单文件组件,不方便回顾,今天把代码改成了html引人的方式,方便回顾 <!DOCTYPE html> ...

  6. 举个例子去理解vuex(状态管理),通俗理解vuex原理,通过vue例子类比

    通俗理解vuex原理---通过vue例子类比   本文主要通过简单的理解来解释下vuex的基本流程,而这也是vuex难点之一. 首先我们先了解下vuex的作用vuex其实是集中的数据管理仓库,相当于数 ...

  7. 快速理解 VUEX 原理

    1. vuex 的作用: vuex其实是集中的数据管理仓库,相当于数据库mongoDB,MySQL等,任何组件都可以存取仓库中的数据. 2. vuex 流程和 vue 类比: 我们看一下一个简单的vu ...

  8. vuex2.0+两个小例子

    首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各核心概念的理解. 废话少说,直接上干货.这是官网上的一 ...

  9. vuex-Actions的用法

    Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 是异步的,mutation是同步的. 沿用vuex学习---简介的案例 ...

随机推荐

  1. IntelliJ IDEA Cannot resolve symbol ''

    study from : https://www.cnblogs.com/linmengfei/p/7909196.html File->Invalidate Caches 点击File | I ...

  2. 常用工具类(System,Runtime,Date,Calendar,Math)

    一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...

  3. C++自定义NULLPTR

    惊奇的发现C++中连NULL和nullptr都有区别 NULL和nullptr 根据文章,应当做好NULL和nullptr的兼容工作 翻阅了一下qt的宏定义 #ifdef __GNC__ #defin ...

  4. 线程(Thread)

    package cn.gouzao.demo3; public class ThreadDemo extends Thread{ public void run(){ for(int i=0;i< ...

  5. 新建体(3):dbms_job下新建一个job定期自动执行存储过程

    http://blog.csdn.net/thinkscape/article/details/7411012http://java-admin.iteye.com/blog/231159sql窗口执 ...

  6. 苹果笔记本适合什么人 中国Mac电脑用户的8个事实

    报告由腾讯 ISUX 研究中心收集了全国 7946 名 Mac 电脑用户的问卷整理而成.并且,参考了苹果公司的历年财报,以及百度.StatCounter 等第三方市场统计数据. 你是 iPhone 用 ...

  7. Systemd 添加自定义服务(开机自启动)

    Systemd 简介:https://fedoraproject.org/wiki/Systemd/zh-cn 一.service unit 常用命令,以 mysql 服务为例 # 开机启动 syst ...

  8. html基本进阶知识【转】

    inline和block的区别: 网页一般是两种元素组合起来的,一种是内联元素,也就是行内显示,加上width和height没效果.一种是区块元素,可以加上对应的width和height,通常使用在网 ...

  9. LeetCode(194.Transpose File)(awk进阶)

    194. Transpose File Given a text file file.txt, transpose its content. You may assume that each row ...

  10. python 有趣的库练习

    这里会将看到别人玩过有趣的实践并记录下来,会是一个长期更新的过程... 以下大部分均非原创变化自网络,只是觉得有趣便记录下来了,如有侵权,请告知删除... 自动化脚本... 20个必不可少的Pytho ...