vue vuex使用总结 actions,mutations的区别

在vue中组件通信的方式有很多,但是不得不提到vuex。也可把它理解为集中管理状态的工具。

使用场景

一个数据在多个页面中都会被使用到,例如:用户信息,购物车信息在多个页面都会被读取和改变
。但如果只是在两个页面中使用的数据 建议通过props和$emit.

五大配置项

1.state

用于存储应用程序的状态,即数据。在Vuex中,我们将所有的状态集中存储在一个对象中,称为state。通过定义state对象,我们可以在应用程序的任何组件中访问和修改状态。

a.声明:
state:{
  userInfo:""
}
b.使用:

$store.state.userInfo

c.辅助函数mapState:
1.import { mapState } from 'vuex'

2....mapState([‘state中属性名’])

2.getters

用于从state中派生出一些状态。getters可以看作是state的计算属性,它们的返回值会根据依赖发生变化而变化。getters可以在组件中使用,类似于计算属性。

a.声明:
getters: {
    name()(state) {
      return data
    }
}

b.使用:

$store.getters.name

c.辅助函数mapGetters:
1.import { mapGetters} from 'vuex'

2....mapGetters([‘state中属性名’])

3.mutations

用于修改state中的数据。mutations是Vuex中唯一允许修改state的方式。每个mutation都有一个字符串类型的事件类型和一个回调函数,用于实际修改state中的数据。

a.声明:
  mutations:{
  	name(state , payload ) {
  		state.userInfo = payload
  	}
  },

b.使用:

$store.commit.name

c.辅助函数mapMutations:
1.import { mapMutations} from 'vuex'

2....mapMutations([‘state中属性名’])

4.actions

用于处理异步操作和提交mutations。actions可以包含任意异步操作,例如从服务器获取数据,然后再提交一个mutation来修改state中的数据。actions通过提交mutations来间接修改state。

a.声明:
  
 actions: {
    // context对象会自动传入,它与store实例具有相同的方法和属性
    name: function(context, payload) {
      // 1. 异步操作获取数据
      // 2. commit调用mutation来修改数据
      // context.commit('mutation名', 载荷)
    }
}
b.使用:

this.$store.dispath ( ‘name’,参数 )

c.辅助函数mapActions:
1.import { mapActions} from 'vuex'

2....mapActions([‘state中属性名’])

5.modules

vuex模块化

a.声明:
  
 //要创建 Vuex 模块,可以使用  createModule  方法。该方法接受一个对象作为参数,该对象包含模块的名称和状态。
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    user: {
      state: {
        name: 'John Doe',
        age: 20
      }
    }
  }
})

const app = new Vue({
  el: '#app',
  store
})

// 访问模块的状态
console.log(store.state.user.name) 
}

拓展:actions,mutations的区别—下期在更

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值