vuex介绍

一、什么是vuex:状态管理模式

通俗:集中式存储管理
存储的东西有哪些:全局共享的属性、全局贡献的方法…

二、vuex的使用场景(为什么要用?)

2.1 很多组件共同使用某一个值的时候(组件传值有可能很繁琐,所以直接用全局共享属性比较方便)
2.2 数据统一管理好维护

vuex中的属性

state ===> 有点像组件的data就是来存放共享数据的
使用1:this.$store.state.xxx
使用2:使用辅助函数

        <script>
        import {mapState} from 'vuex'
           export default{
              computed:{
                 ...mapState(['str1'])
              }
           }
        </script>

​ 调用:{{str1}} 或 this.str1

     以上两种方式有什么区别?
        1. this.$store.state.xx ===> 其实是在$store本身里面找到的属性值
        2.辅助函数的形式 ===> mapState会把state的某一值拷贝一份给vue当前组件的对象
         this.$store.state.xxx 可以直接修改
         this.xxx 不可以直接修改

getters ===> 有点像组建的computed放计算state属性的
使用1:this.$store.getters.changeStr1
使用2:辅助函数的形式

     因为vuex是单向数据流,所以 v-model 绑定 getters 会报错,而且没有get和set的写法(组件是有的)

mutations ===> 有点像组件的methods放全局共享方法
使用1:辅助函数形式

     <template>
        <div class="home">
           <p>首页</p>
           {{ num }}
           <button @click="add(10)">增加</button>
        </div>
     </template>
     <script>
        import {mapMutations } from "vuex";
        export default {
           name: "HomeView",
           methods: {
              ...mapMutations(['add'])
           },
        };
     </script>

​ 使用2:通过commit提交mutations
​ this.$store.commit(‘add’,20)
​ 这种形式是store来提交mutations

actions ===> 和mutations方法有点类似,actions也是用来存放方法的
使用1:
actions: {
total({commit,state}){
state.num ++
}
},
使用2:
this.$store.dispatch(‘total’,20);
方法总结:mutations 可以通过 commit 来提交
actions 可以通过 dispatch 来提交
mutations和actions的区别:

     1. actions可以直接修改state中的数据?可以,但是不建议
              2. 同步/异步
        mutations 是同步函数
        actions 是可以包含异步的

modules ===> 把整个状态管理再次细分
computed:{
…mapState({
组件定义的属性名:state=>state.模块.具体属性名
})
}

vuex持久化存储

vuex是个集中式状态管理工具,本身不是持久话存储,如果要实现持久化存储可以:
1.自己写localStorage
2.使用插件:
https://www.xuexiluxian.cn/blog/detail/beebe5210b54417cb061f9e8b515bbba

某个组件中可以直接修改vuex的状态吗?

可以的方式:
1.通过mutatios方法来修改
2.组件直接修改vuex的数据源 this.$store.state.xxx = ‘xxx’
不可以的方式:
1.直接使用辅助函数
this.num ===> 这种情况是不可以的

vuex中的getters的属性在组件中被v-model绑定会发生什么?

如果修改了,会报错,因为vuex是单向数据流

vuex是单向数据流还是双向数据流?

单向数据流

vuex辅助函数是一组为了简化在Vue组件中访问和使用store中的state、getter、mutation和action的工具函数。使用辅助函数可以减少代码量并提高代码的可读性。其中常用的辅助函数包括mapState、mapGetters、mapMutations和mapActions。 mapState函数可以帮助我们将store中的state映射到组件的计算属性中,使得我们可以直接在组件中访问state的值而不需要通过this.$store.state.xx来获取。这样可以简化代码,并且使得组件与store的关系更加清晰。 mapGetters函数可以帮助我们将store中的getter映射到组件的计算属性中。getter可以理解为store中的派生状态,通过对state的计算而得到的值。使用mapGetters可以让我们在组件中直接访问这些派生状态的值,而不需要通过this.$store.getters.xx来获取。 mapMutations函数可以帮助我们将store中的mutation映射到组件的方法中。mutation是修改store中state的唯一途径,通过提交mutation可以保证所有对state的修改都是同步的。使用mapMutations可以让我们在组件中直接调用mutation的方法,而不需要通过this.$store.commit('mutation名')来提交mutation。 mapActions函数可以帮助我们将store中的action映射到组件的方法中。action可以包含任意异步操作,并通过提交mutation来修改state。使用mapActions可以让我们在组件中直接调用action的方法,而不需要通过this.$store.dispatch('action名')来派发action。 总的来说,vuex辅助函数的作用是简化在Vue组件中访问和使用store中的状态、派生状态、修改状态和派发异步操作的代码,提高代码的可读性和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue全家桶学习—Vuex的4个辅助函数](https://blog.csdn.net/ZHANGYANG_1109/article/details/122050052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题](https://download.csdn.net/download/weixin_38680671/13607816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vuex及其辅助函数](https://blog.csdn.net/qq_45718618/article/details/130002839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冬日柠檬茶.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值