博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue入门 ---- vuex
阅读量:2028 次
发布时间:2019-04-28

本文共 3075 字,大约阅读时间需要 10 分钟。

##简介
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
vuex分为三大部分:
state,驱动应用的数据源;
view,以声明方式将 state 映射到视图;
actions,响应在 view 上的用户输入导致的状态变化。
以下是提供的的示意图:
这里写图片描述

一、初始化

vue init webpack-simple 文件名cd 文件名npm installnpm install vuex -D // 安装vuexnpm run dev

二、在src创建store.js

// 引入vue和vueximport Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex);// state 管理数据const state = {    count: 10,};// mutations 处理数据变化const mutations = {    increment: (state) => {        state.count++;    },    decrement: (state) => {        state.count--;    }};// actions 处理要做什么,异步请求,判断,流程控制const actions = {    increment: ({commit}) => {        commit('increment')    },    decrement: ({commit}) => {        commit('decrement')    },    clickOdd: ({commit, state}) => {        if (state.count % 2 == 0){            commit('increment')        }    },    clickAsync: ({commit}) => {        new Promise((resolve) =>{            setTimeout(function() {                alert(1);            }, 1000);        })    }};const getters = {    count: state => {        return state.count;    },    getOdd: state => {        return state.count%2 == 0? "偶数": "奇数";    }}export default new Vuex.Store({    state,    mutations,    actions,    getters});

三、main.js引用

import Vue from 'vue'import App from './App.vue'import store from './store'new Vue({  store,  el: '#app',  render: h => h(App)})

四、App.vue


官方推荐使用这样的目录结构

|--src   |--store      |--index.js      //      |--types.js      // state数据      |--mutations.js  // mytations      |--actions.js    // actions      |--getter.js     // 获取数据

index.js

// 引入vue和vueximport Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex);// 引入actions和mutationsimport actions from './actions'import mutations from './mutations'import getters from './getters'export default new Vuex.Store({    modules: {        mutations    },    actions,    getters})

types.js

export const INCREMENT = 'INCREMENT'export const DECREMENT = 'DECREMENT'

mutations.js

import {    INCREMENT,    DECREMENT} from './types'const state = {    count: 20};const mutations = {    [INCREMENT]: (state) => {        state.count++;    },    [DECREMENT]: (state) => {        state.count--;    }};export default {    state,    mutations}

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 ? "偶数": "奇数";    }}

App.vue不用变,只需改动main.js的引用

import store from './store/'
你可能感兴趣的文章
计算机网络技术复习题 第十章 下一代因特网
查看>>
数据重生:让神经机器翻译中的不活跃样本“复活”
查看>>
bash shell简述
查看>>
物理内存的管理
查看>>
高效能人士的七个习惯——由内而外全面造就自己
查看>>
为什么精英都是清单控(笔记)——工作清单
查看>>
怦然心动的人生整理魔法(笔记)——物品类别整理
查看>>
让人生发生戏剧性变化的整理魔法(笔记)
查看>>
按物品类别整理的心动收纳法(笔记)
查看>>
番茄工作图解——序(笔记)
查看>>
每天最重要的2小时——序(笔记)
查看>>
29.开源项目--git远程仓库的概念
查看>>
36.开源项目--git搭建本地Git服务器
查看>>
01.创新与企业家精神——创新实践
查看>>
17.创新与企业家精神——攻其软肋
查看>>
14.openssl编程——错误处理
查看>>
29.openssl编程——PKCS7
查看>>
openssl passwd
查看>>
openssl pkeyutl
查看>>
02.规划过程组表格-责任分配矩阵
查看>>