当前位置: 首页 > news >正文

vue3学习4-pinia+组件通信

集中式状态管理,vue2用vuex,vue3用pinia,相当于react中的redux

引入pinia

pinia的具体存储都放到src/store目录下,每个store.js具体存储实现如下:

修改pinia中的数据 3种方式:

1、可以直接修改从pinia中读取的数据

2、通过.$patch 批量变更多个变量

3、借助action实现变更:

使用storeToRefs对store进行解构赋值,可以避免把store种的方法转为refs,只转换变量

getters,是对store中变量的追加定义

getters可以接收state作为传参,也可以不接收state,直接调用this.xx

调用getters定义的变量:和调用state中定义的变量一样,直接解构赋值/直接调用即可

使用$subscribe进行监听,监听store中数据的变化

store的组合式写法,全部随心写,最后return出去就行

常见组件间通信方式(9种):

1、props(实现父子组件之间互相传递)

父组件传数据给子组件:

子组件给父组件传递数据:借用回调函数

尽量避免通过父组件给孙组件传递,层级过于复杂

2、自定义事件custom-event(实现子传父)

接收event参数

给子组件绑定自定义事件,在子组件中通过emit触发自定义事件,emit不光可以触发自定义事件,还可以传递参数

事件的命名建议使用小写+'-'的命名方式

3、mitt实现任意组件传递

接受数据的一方提前订阅消息

发送数据的一方写好触发发送逻辑

一般放到src/utils/emitter.js中

绑定事件emitter.on

触发事件emitter.emit

解绑事件emitter.off

获取全部事件emitter.all--解绑全部事件emitter.all.clear()

组件间通信,并且可以传递参数

记得解绑时卸载组件

4、v-model通信(实际开发中很少使用),对于非原生的自定义组件标签

5、$attrs 适用于父组件给孙组件传递信息,祖孙间传递

所有父传子,子未接收的参数都保存在$attrs中

子传孙:

6、$refs,父组件操作子组件通过ref绑定实现

通过$refs可以获取所有的ref

7、$parent,子改父

父组件中需要指定暴露给子组件的内容

8、祖孙间通信provide-inject,向所有孙辈传递数据

provide可以向所有后代传递数据

后代进行接收

inject后代接收时,可以设置默认值(祖先不传递时才使用默认值)

祖先也可以向后代传递回调函数,实现双向通信,传参时不要加.value,否则变量不是响应式

可以传递对象,对象中有变量+回调函数

ref定义的变量在模板语句中调用的时候可以不用加.value,响应式对象可以自动解包

定义在reactive中的ref不用写.value去解析

v-show是否展示

v-model双向绑定数据

指定绑定数据的类型

相关文章:

  • elementPlus 中表单验证方法(手机号、正整数、邮箱)
  • 【大模型实战篇】Mac本地部署RAGFlow的踩坑史
  • 开源项目austin学习day01
  • GEE中的JavaScript语法基础
  • Vue.js 学习笔记:TodoList 待办事项小案例
  • 50周学习go语言:第2周 基础语法与温度转换程序
  • Redis速成(1)
  • MySQL的三种并发问题和四种隔离级别
  • 机器学习数学基础:34.二列相关教程
  • 学习笔记--电磁兼容性EMC
  • 用AI玩游戏1——狼人杀六人局
  • 大白话Vue2和Vue3双向数据绑定的原理
  • CMU Sphinx、Kaldi 和 Mozilla DeepSpeech 三个开源语音识别引擎的综合比较
  • Linux 常见命令全解析
  • 课程1. 深度学习简介
  • Vue使用Three.js加载glb (gltf) 文件模型及实现简单的选中高亮、测距、测面积
  • Unity汽车笔记
  • prometheus API清理数据
  • Vue3 + Vite使用 vue-i18n
  • C++术语
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 新闻1+1丨城市,如何对青年更友好?
  • 为什么越来越多景区,把C位留给了书店?
  • 微软将裁员3%,减少管理层
  • 巴方:印度上周导弹袭击造成至少40名平民死亡
  • 西王食品连亏三年:主业齐“崩”,研发人员多为专科生