vue学习篇--组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state原因

  • 在组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state?
    为了保证数据时单向流动的,只能在store中操作数据,而组件只能够使用状态,不能修改,

    mutations中必须是同步操作,而在actions中可以有异步操作,
    所有mutations才能操作state,如果actions中能操作state的话,数据会变得难以管理

    mutations中的数据变化是可以被vue的开发工具vue-devTools观测到。 actions中的数据变化是不可以被vue的开发工具vue-devTools观测到。
    所以需要在mutations中做操作。

  • 什么时候应vuex:

    多个组件共享数据,中大型项目,

vuex以模块使用

设置命名空间为true,即namespaced:true 可以让模块下的getters和index.js 中的getters区分开

vuex中的store分模块管理,需要在store的index.js中引入各个模块,为了解决不同模块命名冲突的问题,将不同模块的namespaced:true,之后在不同页面中引入getter、actions、mutations时,需要加上所属的模块名

模块没有设置命名空间的getters访问方式
// ...mapGetters(['nameLength', 'count'])
// ...mapGetters({
//     len: 'nameLength',
//     num: 'count'
// })

给模块设置命名空间的访问方式
...mapGetters({
    len: 'nameLength',
    num: 'cart/count'
})
模块没有设置命名空间的mutations访问方式
// 触发store root的mutations事件 和 模块中的mutations 都会触发
// this.$store.commit('setLon', value);

// 触发设置了命名空间模块的mutations事件
this.$store.commit('address/setLon', value);
this.$store.commit('address/setLat', value);
模块没有设置命名空间的actions访问方式:和mutations一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CCC1115

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值