main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/index.js'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
// 这就等于Vue.prototype.$store = store 这就多了全局的$store属性
store,
router,
render: h => h(App)
})
store/index.js
import Vue from 'vue'
import Vuex from 'Vuex'
// 1.安装插件 => Vuex.install
Vue.use(Vuex)
// 2.创建对象 主要放置五个函数
const store = new Vuex.Store({
// 保存状态
state:{
counter: 1000
},
// 定义方法
mutations:{
// state默认会有这个参数
incremnt(state){
state.counter++
},
decrement(state){
state.counter--
}
},
actions:{
},
getters:{
},
modules:{
}
})
// 3.导出store独享
export default store
router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
}
]
})
HelloWorld.vue
<template>
<div>
<h1>{{ $store.state.counter }}</h1>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
</style>
App.vue
<template>
<div id="app">
<h2>{{$store.state.counter}}</h2>
<!-- <button @click="$store.state.counter++">+</button>
<button @click="$store.state.counter--">-</button> -->
<button @click="addition">+</button>
<button @click="subtracion">-</button>
<router-view/>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
message: '我是神仙!'
}
},
methods:{
addition() {
this.$store.commit('incremnt')
},
subtracion() {
this.$store.commit('decrement')
}
}
}
</script>
<style>
</style>