适用场景

1.全局共享数据,抛开繁琐的组件传值;
2.什么数据适合全局共享?(组件的共享数据);
3.好处?(谁要用,直接获取,组件修改其他的也变化);
4.数据管理集中化,全局管理方便;

如何在项目中使用vuex

1.下载

cnpm  i vuex -S

 

2.导入,挂载vuex(main.js中)

//导入vuex
import Vuex from 'vuex'
//把vuex安装到vue中:
Vue.use(Vuex)

 

3.创建store对象

//创建一个store实例用来全局存储;
const store = new Vuex.Store({
  state: {
    number:5,
           }
    })

 

4.将store挂载到vm上

 //store挂载到vm上,才能在每个组建中通过this.$store.state.公共数据名称
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  render: h => h(App),
  store  
})

 

this.$store.state.数据名称的调用

.vue组件调用:(第一种直接使用)

<template>
  <div>
     {{this.$store.state.number}}
  </div>
</template>

 

.vue组件调用:(第二种导入辅助函数)

import {mapState} from 'vuex'    //按需导入辅助函数和计算属性配合
 // 调用 mapState 函数和展开运算符
  computed:{
   ...mapState(['number']) 
  }

 

页面直接使用

<div>{{number}}</div>

 

mutations:如果要修改state的数据需要在store中调用方法

全局定义使用:

const store = new Vuex.Store({
  state: {
     chuanc:10,
    },
  mutations: {
    add(state){
      state.chuanc += 2
     },
    }
})

 

调用辅助函数mapMutations

import {mapState,mapMutations } from 'vuex'    //按需导入辅助函数和计算属性配合

 

调用方法:

 methods: {
   ...mapMutations(['add']) 
  },
// 调用 mapState 函数和展开运算符
  computed:{
   ...mapState(['chuanc']) 
  }

 

组件展示:

<div>
     {{chuanc}}
     <button @click="add">添加</button>
  </div>

 

getters的使用(相当于计算属性):

1.getters中定义的方法,就相当于vue的计算属性;
2.getters变化了那么getters生成的数据也会变化;

posted on 2020-05-08 09:51  颉旺飞  阅读(301)  评论(0编辑  收藏  举报