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

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双向绑定数据

指定绑定数据的类型


http://www.kler.cn/a/560151.html

相关文章:

  • python与C系列语言的差异总结(2)
  • Apache Doris:一款高性能的实时数据仓库
  • 分班问题幼儿园分班
  • 基于 SpringBoot 的 “电影交流平台小程序” 系统的设计与实现
  • 学习笔记04——JMM内存模型
  • zookeeper的可视化界面
  • 搜广推校招面经二十八
  • 【Docker】如何在Linux、Windows、MacOS中安装Docker
  • 包装类缓存对象
  • Excel带日期画折线图教程
  • 【量化策略】动量反转策略
  • ubuntu 20.04系统离线安装nfs
  • 【JavaScript】什么是JavaScript?以及常见的概念
  • YaRN论文解读
  • 地图(三)利用python绘制等值区域地图
  • 2.24DFS和BFS刷题
  • Junit+Mock
  • Es集群开机重启的设置
  • Parameter 与 Param 有什么区别
  • 安全面试5