vueX的使用

vuex管理全局状态
在这里插入图片描述

state.js文件 vuex管理的状态唯一的

export default {
  count: 0 // 存放的全局使用的状态
}

在vue组件中使用

  • this.$store.state.count 调用
  • 也可以使用vuex中再带的mapState方法调用

mutations.js 直接更新state的状态

  • 接收state参数 这个就是上述全局的状态
  • 里面进行逻辑操作
  • action中的commit(‘mutations名称’,data)调用,间接更新state
  • 只能写同步不能写异步
export default {
  // 更新state的函数
    increments(state,data){
      state.count+=1,
      data:actions中第二个参数传递过来的值
    }
}

actions.js

  • 包含多个回调函数的对象
  • 通过执行commit来触发mutation的调用
  • 组件可以使用 $store.dispatch(‘action名称’,data)
  • 可以包含异步操作 ajax和定时器
export default {
  increment({commit,state},datas){
  //  state是state的全局状态
  // 在vue中  
    //  ...mapActions('这个是模块的名字',[数组里面存放actions.js中的方法名字])
    //  this.方法调用传递的参数,然后datas作为接受
    commit('increments',data) //  调用mutations的方法
  }
}

getters.js

  • 包含计算属性(get)对象
  • 组件中 用 $store.getters.xxx调用
export default {
   evenOrOdd(state){
   // state是state里面的全局状态  return出去即可
    return state.count %2===0?'偶数':'奇数'
  }
}

在组件中使用

<template>
<div id="app">
  <p>click{{count}} count is {{ evenOrOdd }}</p>
  <button @click="increment('参数')">+</button>
</div>
</template>

<script>
import {  mapState, mapActions, mapGetters } from 'vuex'
export default {
  watch: {
    todus: {
      deep: true // 深度监视 保存到localStore
    }
  },
  methods: {
    ...mapActions('模块的名字'['increment'])
    // 应该是设置不同的模块存放不同角色的全局对象
  },
  computed: {
    ...mapState(['count']),
    ...mapGetters(['evenOrOdd'])
  },
}
</script>

去掉vue脚手架的严格模式

module.exports = {
  lintOnSave: false
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值