coderwhy vue3typescript版课堂day组件化开发二_第1页
coderwhy vue3typescript版课堂day组件化开发二_第2页
coderwhy vue3typescript版课堂day组件化开发二_第3页
coderwhy vue3typescript版课堂day组件化开发二_第4页
coderwhy vue3typescript版课堂day组件化开发二_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

n在开发中,我们构建了组件树之后,除了父子组件之间的通信之外,还会有非父子组件之间nppMitt全 总线

nProvide/Inject用于非父子组件之间共享数据p比 p在这种情况下,如果我们仍然将props沿着组件链逐级传递下n对于这种情况下,ProvideInjectp无论层级结构有多深,父组件都可以作为其所有子组件的依赖pprovidep子组件有一injectn实际上,你可以将依赖注入看作是“longrangeprops”pprovidepinjectproperty

n

n如果Provide中提供的一些数据是来自data,那么我们可能会想要通过this来获取np这里给大家留一个思考题,我们的this使用的是哪里的

n我们先来验证一个结果:如果我们修改了s的内容,那么使用lengthn我们会发现对应的子组件中是没有反应的p这是因为当我们修改了names之后,之前在provide中引入s.lengthnp非常的简单,我们可以使用响应式的一些API来完成这些功能,比如说computed函数n注意:我们在使用length的时候需要获取其中的

nVue3从实例中移除了$on、$off和$once方法,所以我们如果希望继续使用全 总线,要通过 的库p 有推荐一些库,例如mitt或tiny-p这里我们主要讲解一下mitt库nnpminstalln其次,我们可以封装一个工具

np我们在Home.vue p我们在App.vue中触

n在某些情况下我们可能希望取消掉之 的函

np前面我们会通过props传递p但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、spanp比如某种情况下我们使用组件,希望组件显示的是一个按钮,某种情况下我们使用组件希望显示的是一 p我们应该让使用者可以决定某一块区域到底存放什么内容和元素n举个栗子:假如我们定制一个通用的导航组件-p这个组件分成三块区域:左边-中间-右边ppp

n这个时候我们就可以来定义插槽p插槽的使用过程其实是抽取共性、预留不同p我们会将共同的元素、内容依然在组件内p同时会将不同的元素使用slot作为占位n如何使用slotpVue中将<slot>元素作为承载分发内容p在封装组件中,使用特殊的元素<slot>就可以为封装组件开启一个插槽p该插槽插入什么内容取决于父组件

n我们一个组件MySlotCpn.vue:n我们在App.vue中使用它们:我们可以插入普通的内容、html

n有时候我们希望在使用插槽时,如果没有插入对应的内容,那么我们需要显示一个默认的内容p

n我们先测试一个知识点:如果一个组件中含有多个插槽p

n事实上,我们希望达到的效果是插槽对应的显示,这个时候我们就可以使用p具名插槽顾名思义就是给插槽起一个名字,<slot>元素有一个特殊的p一个不带name的slot,会带有隐含的名字

npp比如v-slot:left、v-slot:centerp我们可以通过v-slot:[dynamicSlotName]

np跟v-on和v-bind一样,v-slot也有缩写p即把参数之前的所有内容(v-slot:)替换为字符#

n在Vuep父级模板里的所有内容都是在父级作用域中编译p子模板里的所有内容都是在子作用域中编译np在我们的案例中ChildCpn自然是可以让问自己作用域中的titlep但是在App中, 不了ChildCpn中的内容的,因为它们是跨作用域 n

n但是有时候我们希望插槽可 到子组件中的内容是非常重要的p当一个组件被用来渲染一个数组元素时,我们使用插槽,并且希望插槽中没有显示每项的内容p这个Vue给我们提供了作用域插槽np1.在App.vuep2.传递给ShowNamesp3.ShowNames组件中遍历namesp4.定义插槽的p5.通过v-slot:default的方式获取到slot的p6.使用slotProps中的item和

n如果我们的插槽是默认插槽default,那么在使用的时候v-slot:default="slotProps"可以简写为v-n并且如果我们的插槽只有默认插槽时,组件的 可以被当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论