标签:less class compute import exp lan 数据传递 映射 pst
个人认为,不用说得太过深奥,vuex其实就是把一个应用的某些数据统一管理起来,以便其他的组件更方便的操作该数据。
当项目结构越来越复杂,组件的多层嵌套使得数据传递非常繁琐,并且难以维护,有了vuex,我们可以把一些数据的状态统一管理起来,通过调用vuex暴漏出来的API,就可以简单方便操作数据。非常方便。
npm install vuex --save
//这里我引入vue 直接指定了路径 方法不唯一,只要能引入vue即可
import Vue from '../../node_modules/vue/dist/vue.js'
//引入vuex
import Vuex from 'vuex'
//调用 Vue.use()
Vue.use(Vuex)
//创建store实例
const store = new Vuex.Store({
name: "车神-黄杰"
})
//导出 store对象
export default store
import Vue from '../..//node_modules/vue/dist/vue.js'
import App from './App.vue'
import store from './store.js'
//创建vm实例
const vm = new Vue({
el: '#app',
render(c){
return c(App)
},
//在 vm注册store
store
})
//App组件
<template>
<h2>{{name}}</h2>
</template>
<script>
export default {
data(){
return {}
},
computed(){
name(){
return this.$store.state.name
}
}
}
</script>
<style lang="less" scoped></style>
不通过计算属性返回状态得到数据的方式,直接通过 $store.state.xxx也可以获得数据,只不过当一个组件多处都用到该数据,这样代码就会显得很臃肿,而通过计算属性定义每一个数据也很不方便,因此官方提供 mapState函数来帮助我们更方便的把状态映射成为组件的计算属性。没啥好测试的,直接用官网的例子,有以下几种方式:
// 在单独构建的版本中辅助函数为 Vuex.mapState
import { mapState } from 'vuex'
export default {
computed: mapState({
// 箭头函数可使代码更简练
count: state => state.count,
// 传字符串参数 'count' 等同于 `state => state.count`
countAlias: 'count',
// 为了能够使用 `this` 获取局部状态,必须使用常规函数
countPlusLocalState (state) {
return state.count + this.localCount
}
})
}
computed: mapState([
// 映射 this.count 为 store.state.count
'count'
])
computed: {
localComputed () { /* ... */ },
// 使用对象展开运算符将此对象混入到外部对象中
...mapState({
//这里的写法与传入对象的写法一致
}),
...mapState([
//这里的写法与传入数组的写法一致
])
}
标签:less class compute import exp lan 数据传递 映射 pst
原文地址:https://www.cnblogs.com/HJ412/p/10699265.html