vuex的使用

npm install vuex --save

vuex下面store.js里面的内容:

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);

// 声明一个常量
const state={
  count:1
}

//操作变量的方法
const mutations={
  add(state){
    state.count += state.count;
  },
  reduce(state){
    state.count--;
  },
  fn(state){
    console.log(state)
    debugger
  }
}
const actions = {
  add(context) {
    context.commit("add");
  },
  reduce(context) {
    context.commit("reduce");
  },
  fn(context){
    context.commit("fn");
    debugger
  }
}

// 外面使用需要进行暴露
export default new  Vuex.Store({
  state,
  mutations,
  actions

  // state,
  // actions,
  // getters,
  // mutations
})

页面应用:

<template>
  <div>列表 {{count}}
    <button @click="$store.commit('add')">点击</button>
    <button @click="add()">页面点击</button>
  </div>
</template>

<script>
    export default {
        name: "list",
      data(){
          return{
          }
      },
      computed:{
        count:function(){
          return this.$store.state.count // 读取vuex的值
        }
      },
      methods: {
        add(){
          this.$store.dispatch("add")
        }
      }
    }
</script>

 

vuex 使用的场景:

  1. 涉及到非父子关系的组件,例如兄弟关系、祖孙关系,甚至更远的关系;
  2. 他们之间如果有数据交互,那么应该使用Vuex来实现;
  3. 如果页面复杂度比较低的话,也可以考虑使用 global-event-bus 来实现;
  4. 如果只是父子关系的组件数据交互,那么应该考虑使用props进行单向传递;
  5. 如果涉及到子组件向父组件的数据传递,那么应该考虑使用 $emit 和 $on
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值