美文网首页
vuex实践

vuex实践

作者: 前端工程狮_jam | 来源:发表于2017-10-22 21:24 被阅读0次

此文主要为了举例说明vue2.0配合使用vuex,具体文档可以参考vuex官网

1、初始化

mkdir vue-vuex-demo
cd vue-vuex-demo
vue init webpack-simple vuex-test-demo
npm install
npm install vuex -D

2、新建相关文件夹和文件

项目根目录src下新增store文件夹
sotre文件夹下新增index.js、getters.js、actions.js、mutations.js、types.js等文件
//注意index.js不是固定的,可以是其它名字,只是import store文件夹内容的时候默认会去找index.js

3、编写store相关内容

//types.js内容
export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT';

//actions.js内容
import * as types from './types'

export default {
    increment: ({
        commit
    }) => {
        commit(types.INCREMENT);
    },
    decrement: ({
        commit
    }) => {
        commit(types.DECREMENT);
    },
    clickOdd: ({
        commit,
        state
    }) => {
        if (state.mutations.count % 2 == 0) {
            commit(types.INCREMENT);
        }
    },
    clickAsync: ({
        commit
    }) => {
        new Promise((resolve) => {
            setTimeout(function() {
                commit(types.INCREMENT);
            }, 1000);
        })
    }
}

//getter.js
export default {
    count: (state) => {
        return state.count;
    },
    getOdd: (state) => {
        return state.count % 2 == 0 ? '偶数' : '奇数'
    }
}

//mutations.js
import {
    INCREMENT,
    DECREMENT
} from './types'
import getters from './getters'

const state = {
    count: 20
};

const mutations = {
    [INCREMENT](state) {
        state.count++;
    },
    [DECREMENT](state) {
        state.count--;
    }
};

export default {
    state,
    mutations,
    getters
}

//index.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

import mutations from './mutations'
import actions from './actions'


export default new Vuex.Store({
    modules:{
        mutations
    },
    actions
});

4、引入store

在入口文件main.js引入store,注意这里默认找的是index.js,可以命名其它然后指定引用。

import store from './store/'

new Vue({
    store,
    el: '#app',
    render: h => h(App)
})

5、使用vuex

在你需要用的vue文件引入,例如在App.vue。

<template>
  <div id="app">
    <h3>welcome vuex-demo</h3>
    <input type="button" value="增加" @click="increment">
    <input type="button" value="减少" @click="decrement">
    <input type="button" value="偶数才能点击+" @click="clickOdd">
    <input type="button" value="点击异步" @click="clickAsync">

    <div>
      现在数字为: {{count}}, 它现在是 {{getOdd}}
    </div>
  </div>
</template>

<script>
  import {mapGetters, mapActions} from 'vuex'

  export default{
    computed:mapGetters([
      'count',
      'getOdd'
    ]),
    methods:mapActions([
      'increment',
      'decrement',
      'clickOdd',
      'clickAsync'
    ])
  }
</script>

相关文章

  • vuex 基础

    标签: vue [toc] 大纲: 什么时候用到vuex,简介vuex,举例子说明vuex的最佳实践;细节: ac...

  • vuex实践

    此文主要为了举例说明vue2.0配合使用vuex,具体文档可以参考vuex官网 1、初始化 2、新建相关文件夹和文...

  • vuex实践

    前言 为什么要用vuex进行状态管理? 在业务简单的项目中,完全没有必要因为觉得vuex高大上,就使用它,也许一个...

  • Vuex实践

    前言 2017年对于Vue注定是不平凡的一年。凭借着自身简介、轻量、快速等特点,Vue俨然成为最火的前端MVVM开...

  • Vue & Vuex 实践

    随着应用复杂度的增加,我们需要考虑如何进行应用的状态管理,将业务逻辑与界面交互相剥离。Vue 为我们提供了方便的组...

  • Vuex数据流实践

    最近在写一个课程管理类的Web SPA(单页应用)的工具,在最初的时候想着要用到vue全家桶,即Vue2 + Vu...

  • VUEX基本介绍,包含实战示例及代码(基于Vue2.X)

    VUEX 1 VUEX基本介绍 1.1 官方API 1.2 什么是vuex 1.3 Vuex使用场景 1、Vuex...

  • 【文档笔记】-Vuex

    什么是vuex? vuex文档: https://vuex.vuejs.org/zh/[https://vuex....

  • vuex配置

    vuex配置 目录 vuex的五个核心 配置vuex vuex持久化 一、vuex五个核心概念 State 定义状...

  • Vuex

    安装Vuex cnpm install vuex --save-dev Vuex是什么? 这是[Vuex的官网](...

网友评论

      本文标题:vuex实践

      本文链接:https://www.haomeiwen.com/subject/mscesxtx.html