Vue(八)Vuex在项目中的配置和使用

1.首先安装vue项目和vuex

方法一:在创建Vue项目的时候,在选择配置项的这一步,选择 “Vuex”这个模块

方法二:如果创建Vue项目的时候没有安装Vuex模块,可以直接— npm i vuex -s 下载。

2.新建store文件

        注意:如果你在创建Vue项目的时候,配置了Vuex这个模块,你的项目中就有store这个文件。,可以跳过这一步。

如果没有:

在src路径下创建一个store文件,里面创建个index

在这里插入图片描述

在main.js的入口文件引入并在new vue中初始化
注意:引用的时候不加{ }会报错

3.创建基本的vuex结构

 在store/index.js中创建基本的vuex结构

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex)

export const store = new Vuex.Store({
        state : {
            count:6
        },
        // 相当于Vuex中的计算属性
        getters:{
            doCount: (state, getters) => {
                return getters.doneTodos.length
              },
              //getters里的第一个参数是state,第二个是getters本身
            doneTodos:(state) =>{
                return state.count+2
            }            
        },
        mutations : {
            counts(state, v) {
                state.count = v;
            },
            addNum(state,v) {
                if(v){
                    state.count += v
                }else{
                    state.count ++
                }
            },
            reduceNum(state) {
                state.count --
            }
        },
        actions : {
            actionNumAdd(v) {
             // axios.get("/customer/user_info").then(res => {
             //     v.commit(addNum, res.data);
             // });
             //这里可以直接掉接口,并赋值,第一个参数是mutation里对应的名字,第二个参数是传的值
                v.commit('addNum', 6);
            },
            actionNumReduce(v) {
             // axios.get("/customer/user_info").then(res => {
             //     v.commit(addNum, res.data);
             // });
             //这里可以直接掉接口,并赋值,第一个参数是mutation里对应的名字,第二个参数是传的值
                v.commit('reduceNum', 6);
            }
        }

    })

4.接下来就是调用vuex

        下面的实例调用都是用的辅助函数,在刚创建好的App.vue实例基础上调用

调用方法辅助函数
statethis.$store.state.xxxmapState
gettersthis.$store.getters.xxxmapGetters
mutationsthis.$store.commit(xxx)mapMutations
actionsthis.$store.dispatch(xxx)mapActions
<template>
  <div id="app">
    <input v-model="counts" />
    <input v-model="getternum" />
    <button @click="addnum1">mutation+1</button>
    <button @click="actionnum6">action+6</button>
    <img src="./assets/logo.png">
    <router-view/>
  </div>
</template>

<script>
import { mapState , mapMutations , mapActions , mapGetters  } from 'vuex';
export default {
  data(){
    return{

    }
  },
  computed:{
    ...mapState({
      counts:(state) => state.count
    }),
    ...mapGetters({
      getternum:'doneTodos'
    })

  },
  methods:{
    ...mapMutations({
      addnum:'addNum'
    }),
    ...mapActions({
      actionnum:'actionNumAdd'
    }),
    addnum1(){
      this.addnum()
    },
    actionnum6(){
      this.actionnum()
    }
  }
}

</script>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值