美文网首页
vuex数据管理的使用

vuex数据管理的使用

作者: 素时年锦 | 来源:发表于2020-07-18 00:22 被阅读0次

vuex数据管理核心的几个状态和属性是StateMutationGetterActionModule

一、初始步骤

1.通过npm下载vuex

npm n install vuex --save

2.创建vuex文件夹和store.js文件

文件目录
3.vuex/store.js文件中引入vuex
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex)

通过这三步的操作,vuex就算引用成功了

二、State访问状态对象

1.在store.js文件中增加一个常量对象
const state={
    count:1
}

export default 封装导出代码,让外部可以可以使用

export default new Vuex.Store({
    state
})
2.访问State状态对象方式
  • 通过computed的计算属性直接赋值
computed:{
  // computed的计算属性直接赋值
  count(){
      return this.$store.state.count;
  }
}
  • 通过mapState的对象来赋值
computed:{
    // computed的计算属性直接赋值
    // count(){
    //  return this.$store.state.count;
    // }
    // 通过mapState的对象来赋值
    ...mapState({
      count:state=>state.count
    })
},
  • 通过mapState的数组来赋值
computed:{
  ...mapState(['count'])
}

三、Mutations修改状态

  • store.js文件中定义mutations并设置addreduce两个修改状态的方法
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex)
// 状态对象
const state = {
    count:1
}
// 修改状态
const mutations={
    add(state){
        state.count++;
    },
    reduce(state){
        state.count--;
    }
}

export default new Vuex.Store({
    state,
    mutations
})
  • 创建一个vuexdemo.vue的文件
<template>
    <div>
        vuexdemo中的数据:{{count}}
        <div>
            <button @click="addClick">点击+</button>
            <button @click="reduceClick">点击-</button>
        </div>
    </div>
</template>
<script>
import {mapState,mapMutations} from 'vuex' 
export default{
    data(){
        return{
        }
    },
    computed:{
        // computed的计算属性直接赋值
        // count(){
        //  return this.$store.state.count;
        // }
        // 通过mapState的对象来赋值
        // ...mapState({
        // count:state=>state.count
        // })
        // 通过mapState的数组来赋值
        ...mapState(['count'])
    },
    methods:{
        ...mapMutations(['add','reduce']),
        addClick(){
            // 方法一
            // this.add()
            // 方法二
            this.$store.commit('add')
        },
        reduceClick(){
            this.$store.commit('reduce')
        }
    }
}
</script>
点击修改数据
  • 当我们项目庞大的时候,mutations维护起来有可能比较麻烦,可以采用新建mutations_types.js文件,将方法名定义在文件中统一管理。
export const add = 'add'  // 加
export const reduce = 'reduce'  // 减
  • 使用也需要简单修改一下,在当前的store.js文件中
import * as METHOD_TYPE from './mutations_types.js'

// 修改状态
const mutations={
    [METHOD_TYPE.add](state,n){
        state.count = n;
    },
    [METHOD_TYPE.reduce](state){
        state.count--;
    }
}

四、getter 计算过滤操作

  • store.js中加入getters
// 计算过滤操作,这里对数据进行操作
const getters = {
    count:function(state){
        return state.count +=100;
    }
}
// 在Vuex.Store()里引入 上面定义的属性
export default new Vuex.Store({
    state,
    mutations,
    getters
})

页面引入使用

import {mapState,mapMutations,mapGetters} from 'vuex' 

computed:{
  // computed的计算属性直接赋值
  // count(){
  //    return this.$store.state.count;
  // }
  // 通过mapState的对象来赋值
  // ...mapState({
  // count:state=>state.count
  // })
  // 通过mapState的数组来赋值
  ...mapState(['count']),
  ...mapGetters(["count"]) //每次操作count都会相加100
}

五、actions异步修改状态

actionsMutations功能基本一样,不同点是,actions是异步的改变state状态,而Mutations是同步改变状态。
store.js文件中继续写入

// 异步修改
//在actions里写了两个方法addAction和reduceAction,
//在方法体里,我们都用commit调用了Mutations里边的方法
/*
*这里用了两种方法调用
*context:上下文对象,这里你可以理解称store本身。
*{commit}:直接把commit对象传递过来,可以让方法体逻辑和代码更清晰明了。
*/
const actions ={
    addAction(context){
        context.commit('add',10)
    },
    reduceAction({commit}){
        commit('reduce')
    }
}
// 在Vuex.Store()里引入 上面定义的属性
export default new Vuex.Store({
    state,
    mutations,
    getters,
    actions
})

六、module模块组

  • 随着项目的越来越大,状态管理这块就需要我们分模块来管理,分组后再进行按组编写,也为后期我们可以更好的维护。
    /vuex/store.js中进行模块声明,同时对Vuex.Store()里面进行修写
//声明模块组
const moduleA = {
    state,
    mutations,
    getters,
    actions
}
// 在Vuex.Store()里引入 上面定义的属性
export default new Vuex.Store({
    modules:{a:moduleA}
})
  • 页面使用
computed:{
    //用法一:computed的计算属性直接赋值
    // count(){
    //  return this.$store.state.a.count;
    // }
    //用法二:通过mapState的对象来赋值
    ...mapState({
    count:state=>state.a.count
    })
    //用法三:通过mapState的数组来赋值
    // ...mapState(['count']),
    // ...mapGetters(["count"]) //每次操作count都会相加100
},

—— 谨以此记录自己学习的轨迹,沉淀积累知识的笔记。——

相关文章

  • vuex状态管理工具的使用

    vuex使用介绍 使用步骤 下载vuex: npm i vuex -S 创建store实例, 实现数据管理 sto...

  • vuex数据管理的使用

    vuex数据管理核心的几个状态和属性是State、Mutation、Getter、Action、Module 一、...

  • Vuex公共数据管理工具

    用途Vuex 是Vue配套的公共数据管理工具,它可以把一些共享数据保存到vuex,方便程序中的任何组件使用和修改公...

  • vuex 使用

    1, vuex 的作用 vuex 是vue配套的 公共数据管理工具,可以把一些共享的数据,保存到 vuex中,...

  • vuejs基础之共有数据vuex

    1 vuex简介 vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享数据,保存到 vuex 中,方便...

  • Vuex(state/mutations/getters)

    Vuex是什么? Vuex是Vue配套的公共数据管理工具,我们可以将共享的数据保存到Vuex中,方便项目中的任何组...

  • Vuex

    1.Vuex的概述 Vuex是实现组件全局状态数据管理的一种机制,可以方便组件之间数据的共享。 Vuex管理组件的...

  • React数据管理工具Redux流程分析及基础使用实践

    在vue中,我们使用Vuex来管里我们项目中的数据,而在React中,我们同样有相应地数据管理工具Redux。Vu...

  • Vuex使用

    Vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,方便数据管理,避免数据重复加载,...

  • Vuex数据管理

    State对象:给Vue Component提供数据状态,this.$store.state.name、...ma...

网友评论

      本文标题:vuex数据管理的使用

      本文链接:https://www.haomeiwen.com/subject/pibohktx.html