vuex学习笔记

# Vuex 学习笔记

标签(空格分隔): vuex 数据存储

---

## 1. 安装与配置
+ npm i vuex -S
+ 配置步骤
1. 在项目入口文件中导入vuex并挂载
```
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
```
2. 在src文件中创建store文件夹,并在文件夹下创建vuex.js文件,在vuex.js中创建store对象,并向外部暴露
```
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
//数据存放在state中
const state = {
  name: 'huwenwei',
  age: 18,
  gender: 'male',
  number: 0,
  info: ''
}
//getters 对数据进行处理,可以理解为计算属性
const getters = {
  changeNumber: (state) => {
    return state.number + 100
  }
}
// mutations 对数据进行修改的函数,注意:只能进行同步操作
const mutations = {
  showInfo (state) {
    state.info = '我的名字叫' + state.name
  }
}
// actions 类似mutations, 不同的是,可以进行异步操作
const actions = {
  changeAge (context) {     //context 上下文的意思,这里是store实例
    setTimeout(() => {
      console.log('changeAge起作用了')
      context.commit('showInfo')
    }, 2000)
  }
}
//new 一个store对象,向外部暴露
export default new Vuex.Store({
  state,
  getters,
  mutations,
  actions
})
```
3. 在入口文件中导入store文件中的vuex.js,并在Vue实例中注册store
```
import store from './store/vuex'
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
```
4. 至此,vuex的store中的数据和方法已经能够在各个组件中使用了
## 2. vuex在组件中的使用
+ 原始使用方法
```

```
+ 使用辅助函数使用
```
//通过引入辅助函数,之后把需要用的函数导入到methods中,把属性、计算属性导入到computed中,之后就能在组件中直接用响应的名字来使用响应的属性和方法了,(这里的对应关系辅助函数已经处理好了)
<script>
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
export default {
    data: () => ({
    }),
    methods: {
        ...mapActions(['changeAge']),
        ...mapMutations(['showInfo'])
    },
    computed: {
        ...mapState([ "name" , "age" ,"gender" ,"number" ,"info"]),
        ...mapGetters(["changeNumber"])
    }
}
</script>
```

 

posted @ 2018-12-01 15:21  superjsman  阅读(117)  评论(0编辑  收藏  举报