一般电脑网站建设及运营多少钱,技术支持 海安网站建设,免费网站安全,聊城菜鸟网站建设公司##简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 vuex分为三大部分#xff1a; state#xff0c;驱动应用的数据源#xff1b; view#xff0c;以声…##简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态并以相应的规则保证状态以一种可预测的方式发生变化。 vuex分为三大部分 state驱动应用的数据源 view以声明方式将 state 映射到视图 actions响应在 view 上的用户输入导致的状态变化。 以下是vuex官网提供的的示意图
一、初始化
vue init webpack-simple 文件名
cd 文件名
npm install
npm install vuex -D // 安装vuex
npm run dev二、在src创建store.js
// 引入vue和vuex
import Vue from vue
import Vuex from vuexVue.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 ./storenew Vue({store,el: #app,render: h h(App)
})四、App.vue
templatediv idapph3Welcome vuex/h3input typebutton value增加 clickincrementinput typebutton value减少 clickdecrementinput typebutton value偶数才能点击 clickclickOddinput typebutton value点击异步 clickclickAsyncdiv现在的数字为{{count}}, 他现在是{{getOdd}}/div/div
/templatescript// mapAction 管理事件// mapGetters 获取数据
import {mapGetters, mapActions} from vuex
export default {computed: mapGetters([count,getOdd,]),methods: mapActions([increment,decrement,clickOdd,clickAsync])
}
/scriptstyle/style官方推荐使用这样的目录结构
|--src|--store|--index.js //|--types.js // state数据|--mutations.js // mytations|--actions.js // actions|--getter.js // 获取数据index.js
// 引入vue和vuex
import Vue from vue
import Vuex from vuexVue.use(Vuex);
// 引入actions和mutations
import actions from ./actions
import mutations from ./mutations
import getters from ./gettersexport default new Vuex.Store({modules: {mutations},actions,getters
})types.js
export const INCREMENT INCREMENT
export const DECREMENT DECREMENTmutations.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/