使用vuex進行組件間數據的管理
npm i vuex -S
main.js
import Vue from 'vue' import App from './App.vue' import store from './store.js' new Vue({ store, el: '#app', render: h => h(App) })
store.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 這里定義初始值 let state = { count:10 }; const mutations = { add(context){ context.count++ }, decrease(context){ context.count-- } }; // 事件觸發后的邏輯操作 // 參數為事件函數 const actions = { add(add){ add.commit('add') }, decrease(decrease){ decrease.commit('decrease') }, oddAdd({commit,state}){ if (state.count % 2 === 0) { commit('add') } } }; // 返回改變后的數值 const getters = { count(context){ return context.count }, getOdd(context) { return context.count % 2 === 0 ? '偶數' : '奇數' } }; export default new Vuex.Store({ state, mutations, actions, getters })
App.vue
<template> <div id="app"> <button @click="add">add</button> <button @click="decrease">decrease</button> <button @click="oddAdd">oddAdd</button> <div>{{count}}</div> <div>{{getOdd}}</div> </div> </template> <script> import {mapGetters,mapActions} from 'vuex' export default { // 得到計算后的值 computed:mapGetters(['count','getOdd']), // 發生點擊事件觸發不同函數 methods:mapActions(['add','decrease','oddAdd']) } </script>