Vuex简介

什么是Vuex?

Vuex是集中式管理状态的模式(多个组件共同读写同一个数据)

什么时候使用组件?

  • 多个视图依赖于同一状态。
  • 来自不同视图的行为需要变更同一状态。

Vuex 工作原理图

Vuex有三个重要的组成部分 分别是Actions、mustaions、state 。

1. Actions 用来处理异步操作。比方说 backend API (请求数据) ,也就是说异步操作放在Actions里面进行处理

2. Mutations 是同步操作,也是用来更改state状态的地方。 在这里需要说一句, 更改state状态的操作,统一放在mutations里面。 原因有三 ①mutations是同步操作更适合更改state状态 ② 官网要求的 ③ 在严格模式下不在mutations里面更改状态会报错

3. state 是用来存放数据的地方。 state英文翻译就是状态也就是数据。

在vuex中有两个比较重要的方法。

 1.dispatch:  用于使用Actions里面的方法

  2.commit 用于使用mutations里面的方法 当然在我们的vuex工作原理图中还有一个mutate,这个其实就相当于去更改state数据,在mutations中操作。无法直接使用这个方法。

   也就是相当于只有mutations才能使用mutate,也就是只有在mutations中才能更改state状态。

Map技术的使用

Map英文翻译地图、映射的意思,Map的作用就是 我们在组件中调用vuex中的方法或者获取vuex中的state时,进行简化获取的代码。

 比方说正常情况下获取state数据,需要  this.$store.state.属性名。 而使用map后可以只需要写属属性名就可以了

Map是vuex中的API

 在组件中只需要引入即可 ,一共有四个可以使用的Map 分别是mapState、mapGetter、mapActions、mapMutations。  都是驼峰命名法

 以state为例

  import {mapState} from 'vuex'

  因为state里面存放的都是数据,我们只需要获取获取数据的路径就可以了

 因此我们在计算属性中使用map

  mapState(['sum'])  返回出来的值就是 this.$store.state.sum 就是自动帮我们拼接。mapState里面也可以接受对象。 就相当于把vuex中的数据获取过来直接在重新命名,在组件中使用

 如果你使用vuex模块化,在vuex中有可能会有命名冲突的问题,而你就可以使用对象结构将获取的数据重新命名

 mapState({重新命名Name:'state中的属性名'})

剩下三个Map的使用比较类似,其中的mapActions和mapmutations 有些许差异 因为Actions和mutations里面是方法,用于逻辑处理的,大家可以翻看官方文档

Vuex环境的搭建

  ① 下载Vuex包 npm install Vuex -d  放在生产环境下

  ②  创建一个js文件可以命名为store 引入vue、vuex , 在main.js  也就是vue入口文件中使用中间件引入vuex

     vue.use(vuex)

    然后将创建的js文中 导入到vue入口文件中,添加至vue实例中.

    vue入口文件

import Vue from 'vue'

import App from './App.vue'

import store from './store'

Vue.config.productionTip = false;

new Vue({

  render: h => h(App),

  store,  

}).$mount('#app');

相当于注册在vue中了, 在vue component 中就可以找到vuex了。

  vue 实例与vue组件的关系,就相当于vue是原型 vue组件相当于是根据原型创建的一个实例。

 在vue中注册vuex,就相当于 vue组件也有了这个方法。

vuex中要讲的部分虽然不是很多,但如果都用文字描述出来的话,工作量还是比较大的。 所以我向使用多个章节讲里面的知识点分别讲述

 一共有以下几个知识点会在后面的章节叙说

 ① vuex环境的搭建

② mapState、mapGetter 的使用

③ mapActions、mapMutations的使用

④vuex模块化以及map如何调用模块中的状态

⑤getter配置项以及plugin插件的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex和Pinia都是Vue.js的状态管理库,用于在Vue.js应用程序中管理和共享状态。它们都提供了一种结构化的方式来管理应用程序的状态,并且能够在组件之间方便地共享数据。[1] 然而,Vuex和Pinia在设计和使用上有一些区别。Vuex是Vue.js官方推荐的状态管理库,它使用了基于对象的全局状态树的概念,通过定义和调用mutations、actions和getters来修改和获取状态。而Pinia是由Vue.js社区维护的新一代状态管理库,它借鉴了Vuex的设计思想,并使用了Vue 3 Composition API来定义状态和操作。Pinia提供了更简洁、类型安全的API,并且与Vue 3生态系统中的其他库和工具更好地集成。 虽然Vuex是Vue.js的官方推荐库,并且在大量项目中得到了广泛应用,但Pinia作为一个新兴的状态管理库也受到了一定的关注。它提供了更好的类型安全性和更简洁的API,尤其是在使用Vue 3 Composition API时,能够让开发者更好地利用Vue.js的新特性。 总结来说,Vuex是Vue.js官方推荐的状态管理库,而Pinia是一个新一代的状态管理库,它们都可以在Vue.js应用程序中管理和共享状态,但在使用方式和API设计上有一些区别。具体选择使用哪个库,可以根据项目的需求、开发者的习惯和技术栈来进行权衡和选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [简介vuex和pinia](https://blog.csdn.net/m0_71966801/article/details/131603107)[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: 50%"] - *3* [在vue中使用pinia,并且保持数据持久化](https://download.csdn.net/download/shaoyahu/87691975)[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: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值