vue自学入门-5(vuex state)
vue自学入门-1(Windows下搭建vue环境)
vue自学入门-2(vue创建项目)
vue自学入门-3(vue第一个例子)
vue自学入门-4(vue slot)
vue自学入门-5(vuex state)
vue自学入门-6(vue jsx)
vue自学入门-7(vue style scope)
vue自学入门-8(vue slot-scope)
同上一节,通过HelloWorld修改一个值,改变App.Vue中显示
实现目标
1、增加一个store文件夹,新建一个idex.js
import Vue from 'vue'import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
}
})
export default store
2、修改helloWorld代码如下
import Vue from 'vue'import store from '../store/index.js'
Vue.use(store)
<template>
<div class="hello">
<div @click="add()">点我增加1</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
methods: { add () {
this.$store.state.count += 1
}},
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
也可以不单独建index.js
import Vue from 'vue'import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
}
})
Vue.use(store)
<template>
<div class="hello">
<div @click="add()">点我增加1</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
methods: { add () {
this.$store.state.count += 1
}},
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
3、修改App.vue代码如下
<template><div id="app">
<img src="./assets/logo.png">
<router-view/>
<div>{{count}}</div>
</div>
</template>
<script>
export default {
name: 'App',
computed: {
count () {
return this.$store.state.count
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
保存成功
3、Vue不推荐直接操作store中对象,推荐使用mutation,修改代码如下
import Vue from 'vue'import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
strict: true,
state: {
count: 0
},
mutations: {
add1 (state) {
state.count += 2
}
}
})
export default store
点击就每次增加2
使用mutation方式好处:
1、界面逻辑分离
2、能够通过devtools跟踪
3、不能使用异步函数,防止不确定问题。
以上是 vue自学入门-5(vuex state) 的全部内容, 来源链接: utcz.com/z/377557.html