<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>vuex-demo</title>
</head>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script src="https://cdn.bootcss.com/vuex/3.1.0/vuex.js"></script>
<body>
<div id="app">
<h1>
{{welcome}}
</h1>
<h2>
{{message}}
</h2>
<h3>
{{count}}
</h3>
<button @click="pressed">counter</button>
</div>
</body>
<script>
const store = new Vuex.Store({
state: {
message: 'Hello from Vuex',
count: 0
},
mutations: {
increment(state, payload) {
state.count += payload
}
},
actions: {
increment(state, payload) {
state.commit('increment', payload);
}
},
getters: {
message(state) {
return state.message.toUpperCase();
},
counter(state) {
return state.count;
}
}
});
new Vue({
el: '#app',
data() {
return {
welcome: 'Hello world'
}
},
computed: {
message() {
return store.getters.message
},
count() {
return store.getters.counter;
}
},
methods: {
pressed() {
// store.commit('increment', 10);
store.dispatch('increment', 20);
}
},
})
</script>
</html>