推广

Vue-day-07(vuex基础使用)

iseeyu2年前 (2024-02-21)推广117

image.png

  • 之前共享数据,是通过以上方式
  • 以上方式,只适用于小范围内传递数据

2 vuex介绍:更适合用于传递数据,包括大范围传递

image.png

  • 没有vuex时:A向B传递数据,需要通过上图中的蓝色剪头来进行一一传递,非常麻烦
  • 有vuex时,A直接将要共享的数据,存储到Store中,然后B直接从Store中获取即可,非常简单。

1.2 vuex的基本使用

1. 使用步骤

image.png

image.png

2、创建vuex项目
  1. 选择目录

    image.png

    2 创建目录

    image.png

    3 选择手动配置

    image.png

    4 选择依赖

    image.png

3、创建成功之后,默认有store.js文件

image.png

  • 在这个文件中,导入了vue和vuex
  • 并且注册了vuex
  • 然后暴露了vuex的store数据
  • 大家在创建出来之后,没有store.js,而是store/index.js(跟router一样,版本导致的)
4、main文件

image.png

  • 将store对象挂载到了vue中
  • 这样所有的vue组件都可以使用store对象

1.3 初始化计数器项目的基本结构

1. 运行

image.png

2、app界面修改,删除之前的所有内容,修改如下:

image.png

3、删除HelloWorld
4、减法界面:components/Subtraction.vue

image.png

5、加法界面:components/Addition.vue

image.png

6、app界面导入俩界面:

image.png

7 、效果

image.png

8、配置格式的语法处理:末尾分号,单引号(根目录新建.prettierrc)

image.png

9、提交本地仓库

image.png

1.4 定义并访全局共享的数据

1 、核心

image.png

2、State介绍

image.png

在vue界面中访问count:this.$store.state.count

3 、定义共享数据count

image.png

4、访问count

image.png

  • 在template中访问vue实例中的内容时,this可以省略
  • 完整写法:{{this.$store.state.count}}
5、效果

image.png

1.5 组件访问state中数据的第二种方式

1、第二种用法

image.png

mapState是固定写法

  • 可以理解为:mapState是state数据映射的函数,通过mapState可以获取state中的数据
  • mapState([‘state数据1′,’state数据2’]),将想要获取的state数据,作为参数传递给mapState
  • 例如:mapState([‘count’]),获取到的就是count数据对应的一个对象{count:f}
  • 打印mapState([‘count’]),结果如下
    m

image.png

  • 这个count是一个function,这个方法会将count的真实数据返回
  • 我们只需要对mapState([‘count’])进行展开…运算之后,就可以获取到count
  • 最终结果:
computed:{
    count(){
        return this.$store.state.count;
    }
}

注意:因为count是一个提供数据的函数,所以state里的书写需要映射到computed中,变成一个计算属性

2、减法中使用第二种方式

image.png

导入mapState之后,就可以使用第二种用法:可以将store共享数据,映射为计算属性

3、 分析

image.png

1.6 学习mutation的基本使用

1 、+1操作

image.png

效果:可以成功,并且没有报错
但是这里我们不能这样处理,需要通过Mutation来修改store的值

2、 Mutation介绍:mutation:变化的意思

image.png

commit的内部逻辑

//commit的内部逻辑
function commit(mutationFn){
    mutationFn(this.$store.state) // add(this.$store.state)
}
//调用代码
this.$store.commit('add');

//自己调用
this.$store.mutations.add(this.$store.state)
this.$store.mutations.add1(this.$store.state)

为啥只能通过mutation来操作store的数据呢?

  • 为了统一管理,可以将修改store值的操作,统一在一起,可以方便监控数据的变化
  • 比如:在Addition和Subtracion以及其他很多界面,都是直接修改count的值,那么后期发现count的值有问题,那么我们就需要找很多文件,一个一个文件排查才可能找出问题,不方便监控数据的变化
3、mutation中定义add方法,修改count

image.png

这样的话,所有的count修改的逻辑,都定义在mutations中,以后想要知道哪里的逻辑修改了count,就方便找了

4、 触发add方法

image.png

  • commit:提交,理解为触发,调用
  • commit就是用于调用mutation中的方法

1.7 在触发mutation的时候携带参数

1、 mutation传参

image.png

  • 定义方法时,
    • 第一个参数是固定接收state对象,参数名可以改,但是一般都是state
      • 为啥第一个参数固定接收state对象,因为mutations方法就是用于修改state中的数据的,
      • 所以需要有state对象才能修改
    • 第二个参数step(自定义),就是我们在调用时传递的第一个参数
  • commit:调用方法时
    • 第一个参数:调用的方法名
    • 第二个参数:给调用的方法传递的第一个参数值
2 、定义带参数的mutations方法

image.png

3、 调用带参数的mutations方法

image.png

1.8 触发mutation的第二种方式

1 、mutations第二种用法:映射函数

image.png

  • 这里的mapMutations也是固定的名字
  • mapMutations用于映射mutations方法
  • 与mapState类似,都是一个映射函数,用法也一致
  • 只不过mutations既然是一个函数,那么就在methods中映射
    最终效果相当于:
methods: {
    add(state) {
        state.count++
    },
    addN(state, step) {
         state.count += step
    },
}
2、 定义sub方法

image.png

3 、使用

image.png

  • 通过…mapMutations将sub映射为当前组件方法,所以可以通过this调用sub方法
  • 其实这里可以不用定义btnHandler1方法,调用this.sub()
  • 直接在-1的按钮上,click事件触发sub即可
4、带参数的方法

image.png

5、 映射带参数的方法

image.png

  • 映射有参的函数,和无参的函数是一样的
  • 只是调用的时候,传递参数

1.9 action的基本使用

1 、先来看一个现象:通过vue调试工具中的第二个窗口,vuex数据窗口

image.png

  • 点击+1,count为1
  • 点击+N,count为4
  • 数据是可以通过vue调试工具实时观察的
2 、我们来处理一个延迟逻辑

image.png

  • 发现点击了+1之后,1s之后界面显示了count为1
  • 但是vue调试工具中,count还是为0
  • 虽然能够成功,但是调试工具出了问题,所以mutations中不能执行异步操作
3、 Action介绍

image.png

  • 异步操作都定义到actions中
    • actions中要操作数据,必须通过commit触发方法来修改
    • actions中不能直接修改store的数据,数据只能在mutations中修改
    • 异步方法必须有一个参数,context,代表当前store实例对象
      • 因为为了方便通过commit触发mutations方法
  • 触发action
    • 通过store实例中的方法dispatch来调用
    • dispatch:分发的意思,异步的任务都是通过分发的方式调用的
4 、异步方法定义

image.png

5、 触发异步方法

image.png

1.10 在触发action的时候携带参数

1、 异步参数

image.png

  • 定义异步方法,第二个参数就是要给addN方法传递的参数
  • 调用异步方法,第一个参数是调用的方法名,第二个参数是给addNAsync方法传递的参数
2、添加异步参数方法

image.png

3、 Addition方法,添加按钮

image.png

4 、定义方法

image.png

1.11 触发action的第二种方式

1 、Action第二种用法:映射

image.png

  • 根state数据,mutations方法的第二种使用一模一样
  • 因为action也是方法,所以同mutations一样映射到methods中
2、 定义异步方法

image.png

3、 定义按钮

image.png

4 、导入

image.png

5、 映射,调用

image.png

6、这里映射的subAsync也可以直接使用

image.png

7、带参数的第二种用法

image.png

1.12 介绍getter的使用

1、 getter介绍

image.png

2 、getter使用介绍

image.png

既然getter当属性使用,所以在computed中映射

3 、定义getters方法,并使用

image.png

4、 第二种用法:映射

image.png

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57275.html

相关文章

快手信息广告真的是没效果吗?

我是装修平台的信息流广告员,在快手上投广告,可以看出快手管理混乱,投放区域不清,用户素质更低!所以在快手上投放广告没有任何意义!投放广告:1、我打400电话给快手客服,说明要投放信息流线索类广告,客服说明:会有业务人员跟我联系!2、有一个自称快手代理吉林优信网络传媒有限公司...

极速推广99元一天能点完吗(千牛99元极速推广效果好吗?)

极速推广99元一天能点完吗(千牛99元极速推广效果好吗?)

要先去了解试用推广这个推广模式的一个定义。试用推广也称体验式营销推广,简单的来说就是以产品作为推广成本让利给消费者,通过试客试用体验,让我们的产品得到消费者的认可并且得到良好的宣传。...

「荐读」要想成功,就要先弄懂成功的底层逻辑,培养这十种思维

「荐读」要想成功,就要先弄懂成功的底层逻辑,培养这十种思维

相信每个人都希望能够成为一个成功的人。没有人想过得庸庸碌碌,一事无成。但成功并不是一件多么容易的事情。要想成功,就需要先弄懂成功的底层逻辑,学会成功者的方式。因为方向对了,才能事半功倍。今天么就一起来学习十个成功的底层思维。所谓近朱者赤近墨者黑,大凡成功人士都非常重视自己的...

百度推广操作基本规则有哪些

百度凡是做百度竞价推广没有成效,一定是有原因的,往往有:关键词差、点击咨询、页面跳出率、恶意点击、成本控制等问题,那我们遇到了应该如何解决呢? 百度推广规则 许多时候竞价账户要面对每天的总预算限制去分配各个计划的每日费用,当在这样的情况下各个计划预算不足的话,广告展现会提前...

企业做网络优化时不能忽略哪些细节。

企业做网络优化时不能忽略哪些细节。

大家都知道。谁的网站做的网络优化能够符合搜索引擎规则,谁的排名也就越理想。所以在以搜索引擎引擎为基础的网络宣传,没有永远稳定的排名,有的是做网络优化细节方面的不断革新升级,排名的优胜劣汰。做网络优化在其中博得一席之地在于是不是能够力压群雄的网络优化细节。为什么有些新网络优化能够青出于蓝,就是因为细节...

SEO中的实用性原则。

SEO中的实用性原则。

SEO是非常讲究实用性的,所谓实用性,就是网站内容对于用户来说的实用性。这个将是未来搜索引擎在进行排名时越来越看重的一个地方。搜索引擎的作用就是给用户推荐需要的内容,如果你的内容对于用户来说帮助很大,那么搜索引擎自然会给你的网站一个很高的评分。岳浩认为网站的实用性主要是通过用户的访问数、访问时间、...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片