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

Vue3 + TypeScript学习

Vue3 + TypeScript学习3

    • Study_21 StoreToRefs(读数据)
    • Study_22 使用getters
    • Study_23 Subscribe订阅
    • Study_24 Store的组合写法
    • Study_25 组件通信props
      • (一)父传子:
      • (二)子传给父亲:
    • Study_26 自定义事件(典型的用于子传父的)
    • Study_27 Pubsub、$bus、mitt
    • Study_28 v-model组件通信
    • Study_29 $attrs祖给孙传值
    • Study_30 refs、$parent、Ref

Study_21 StoreToRefs(读数据)

问题:读取数据时太繁杂了,我想改成下面这种
在这里插入图片描述
(1)此时:在这里插入图片描述
结果发现如此行事会丢失了响应式
(2)因此第二种方式:
在这里插入图片描述
但是此刻把store中的所用东西都变成响应式了,使用起来代价大
(3)由此:第三种方式
引入
在这里插入图片描述
使用:使用countStore,得到一个专门存放count相关的store
在这里插入图片描述

Study_22 使用getters

类似于计算属性,他在store中可以直接拿到state中的数值,进行操作
在这里插入图片描述
也可以不用state,直接通过this来拿
在这里插入图片描述
因此bigSum可以直接写为箭头函数
在这里插入图片描述

Study_23 Subscribe订阅

Subscribe订阅,监视vuex中的数据修改
在组件.vue文件中
在这里插入图片描述
在store->ts文件中
在这里插入图片描述

Study_24 Store的组合写法

在store中,最开始的写法
在这里插入图片描述
组合式写法:
在这里插入图片描述

Study_25 组件通信props

组件通信Props,在Study_16有详细的

(一)父传子:

在父组件中(记得在script中引入child组件)

  <Child :car=”car”> 这是传给子组件值

在子组件中

使用<h4>父传来的car:{{car}}</h4>
<Script>defineProps([“car”])
</Script>

(二)子传给父亲:

需要现在父亲中定义一个接收传值的方式

Function getToy(value){Console.log(“传来的toy值”,value)
}
<Child :car=”car” :sendToy=”getToy”>

在子组件中接收:
(写法1)

<Script>
//需要先把这个接收并保存
Let props = defineProps([“car”,”sendToy”])
Function fasong(){Console.log(props.sendToy)
}
</Script>
<button @click=”fasong”>传玩具的值给父亲</button>

(写法2)

<Script>
//需要先把这个接收并保存
defineProps([“car”,”sendToy”])
</Script>
//记得把子组件定义的这个toy值传递一下sendToy(toy)
<button @click=sendToy(toy)>传玩具的值给父亲</button>

Study_26 自定义事件(典型的用于子传父的)

自定义事件(典型的用于子传父的)
父组件中:
1.(想在传递参数的同时,也要传事件对象$event过去)

<button @click=”test(6,7,$event)>点击</button>
Function test(a:number,b:number,c:Event){Console.log(‘test’,a,b)
}
  1. 自定义事件学习
    在父组件中使用这个自定义事件(绑定)
<Child @haha=”xyz” />
Function  xyz(value:number){Console.log(“haha自定义事件被调用了”,value)
}

如何触发:
在子组件中声明

 Const emit = defineEmits([“haha”])
//在组件被挂载3s后出发这个haha
onMounted(()=>{setTimeout(()=>{emit(“haha”)},3000)
})

这个emit(“haha”)可以写在任何地方
还比如,可以传参数来

<button @click=emit(“haha”,666)>点击</button>

Study_27 Pubsub、$bus、mitt

接收数据的:提前绑好事件(提前订阅消息)
提供数据的:在合适的时候触发事件(发布消息)
Mitt可以实现任何组件之间的通信
第一步:安装npm i mitt
第二步:新建文件emitters
在这里插入图片描述
在这里插入图片描述
在main.ts中进行引入
在这里插入图片描述
之后便可以在emitter.ts中进行触发了
在这里插入图片描述
使用emitters实现组件之间的通信
子组件1将数据提供给子组件2
提供数据:子组件1(触发)
接收数据:子组件2(只要接收数据就必定会绑定事件)
步骤1
在组件2中绑定事件
在这里插入图片描述
在组件1中触发事件
在这里插入图片描述
此时便可以在组件2中使用组件1中的数据了
组件2是接收数据,组件1是传递数据
在这里插入图片描述
在这里插入图片描述
注意:
在组建被卸载的时候解绑事件,可以减小对内存的占用(记得引入onUnmounted)
在这里插入图片描述

Study_28 v-model组件通信

v-model在实际开发中,不会真正自己使用v-mode往上面编写v-model
UI组件库大量使用v-model进行双向绑定
v-model用在HTML标签上:
下面两个写法都可以实现双向绑定
在这里插入图片描述
v-model用在组件标签上:
在父组件中使用子组件
有两种使用方法:
(1):
在这里插入图片描述
(2):
在vue2中使用的是value和input事件
在这里插入图片描述
其实写法1就相当于写法2,当写了1之后,UI组件库会自动将写法1解析为写法2的形式
在子组件中:
接收value并触发事件
在这里插入图片描述
$event是什么?什么时候.target?

对于原生事件, e v e n t 就是事件对象,可以 . t a r g e t 对于自定义事件, event就是事件对象,可以.target 对于自定义事件, event就是事件对象,可以.target对于自定义事件,event就是触发事件时所传递的数据,不能.target
修改modelValue

<!-- 修改modelValue,此处的yonghuming代表modelValue的重新命名的值,在子组件中,将所有时modelValue的地方改成yonghuming即可,因此便可以实现一个框绑定多个事件了 -->
<input type="text" v-model:yonghuming="username">
<input type="text" v-model:yonghuming="username">

Study_29 $attrs祖给孙传值

$attrs祖给孙传值(会打扰到中间人),但是provide和inject不会
父组件—>子组件
当父组件给子组件传了值,但是子组件并没有声明接受,没有被声明接收的将会被存储在attrs中,被声明接收了的存在props中
在这里插入图片描述

<Child :a='a' :b='b' :c='c' :d='d' v-bind='{x:100,y:200}' />

另一种写法:
在这里插入图片描述
子组件–>孙组件
在这里插入图片描述
一种孙传祖(孙–>祖)
在这里插入图片描述

Study_30 refs、$parent、Ref

$refs:父传子
$parent:子传父
Ref实现父传子的修改
在这里插入图片描述
$refs:想要一次搞进来很多子组件的数据
在这里插入图片描述
可以拿到所有子组件的数据
在这里插入图片描述
父传子
在这里插入图片描述

http://www.dtcms.com/a/585244.html

相关文章:

  • GitHub Action工作流语法
  • 动态效果网站建设技术广东省建筑工程信息网
  • cpp_list
  • rk3588上用rk_mpi_vi_test与ffmpeg实战
  • Rust 练习册 :Queen Attack与国际象棋逻辑
  • CSS学习
  • 使用V4L2工具验证RK3588平台视频设备节点数据有效性
  • Rust 练习册 :Protein Translation与生物信息学
  • 网站开发课程知识点总结图片自动生成器
  • 【STL——常用遍历与查找算法】
  • 牛客网华为在线编程题
  • 29网站建设全部400网站总机 阿里云
  • 第四章 依赖项属性
  • wpf 结合 HALCON 编程 学习知识点列表有哪些?如何学习?
  • 学习C#调用OpenXml操作word文档的基本用法(5:Style类分析-3)
  • 系统运维Day03_FTP与磁盘挂载
  • 嘉兴网站备案去哪里优化网站是什么意思
  • SQL笔试题(2)
  • MATLAB/Simulink三机九节点
  • JVM 内存结构与 GC 调优全景图
  • 4.3.5【2024统考真题】
  • 如何进行MSSQL提权?sp_oacreate、sp_oamethod和沙盒提权以及xp_regwrighte提权
  • AI大模型开发架构设计(23)——LangChain技术架构和关键技术深度剖析
  • JavaScript 中的 void 关键字详解
  • 智能演示时代:8款免费AI PPT生成工具全面评测
  • 实验室建设网站网站开发公司经营范围
  • 怎样做能直接上传微信的视频网站钢结构招聘网最新招聘信息
  • 什么是缓存
  • 电力设备多模态数据融合与自适应阈值在线状态评估
  • 顺序表vector--------练习题8题解