vue3没了$children,如何获取子组件???

作者&投稿:班湛 (若有异议请与网页底部的电邮联系)
~

vue3已经推出很久了,相信大家也都体验过了,变化很大,尤其是composition Api的出现,而且对typescript的支持更好了,但是写惯了vue2的我,在使用setup的时候,碰到了一个问题:setup里面没有this,而且废除了$children,那么我要如何获取当前组件的实例和获取当前组件的子组件??
本文创建两个演示示例组件:Parent.vue、Children,vue
一、获取当前组件
vue3提供了一个getCurrentInstance方法用来获取当前组件的实例

来看页面

控制台中打印出的对象就是当前组件的实例,拿到这个实例对象之后就能调用里面的方法,比如parent,props等数据,这个就是一个方法的事儿

一、获取当前组件的子组件实例
先来看看vue3官网对$children的说明

意思就是说推荐我们使用ref对子组件进行绑定,然后访问子组件
在Children.vue中家点东西

父组件注册Children

然后就能看到子组件的内容了

下面就通过ref来绑定子组件,要在vue中引入ref。需要注意的是setup的执行是早于mounted,甚至早于created生命周期的,所以通过ref绑定成功之后需要在mounted生命周期才能访问到你绑定的子组件的

调用子组件的方法
setup的第二个参数上有一个expose 属性,这是vue3.2+才出现的内容,通过expose 可以将该组件内部的一些方法等对外进行暴露

然后父组件通过ref绑定子组件之后,就可以调用子组件暴露出来的setCounter函数了

再来看一个例子
假如有这么一个需求,需要你将Children以插槽的方式传进Parent组件,

并且Parent组件内部要对插槽的内容进行校验,必须是Children组件。再创建一个test.vue

需求的意思就是Parent组件内部要进行校验,总不可能将Parent内部的直接子元素一一绑定ref吧?这样太过冗余,如果传入了上百个Children组件呢?更麻烦了。
所以还是要来说说setup的参数了,setup第二个参数context上有一个属性slots,slots上又有一个方法default,该方法的返回值就是一个插槽内容的数组

接下来在Parent.vue中导入Children组件,并在test.vue的Parent组件中添加一个div

然后Parent组件内部进行判断




声母表和韵母表
复韵母:ai 、ei、 ui 、ao、 ou、 iu 、ie 、ve、 er、 an 、en 、in、 un 、vn 、ang 、eng、 ing 、ong

小学语文中什么是音序?什么是音节?
一、音序 音序,指音节的第一个字母的大写,就是以汉语拼音为顺序。它通常用于字典上的字词排列。它的顺序为:A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z。其中少了V(因它v不能做音序,而且读不出来)。不过在音节中,韵母ü已经可以被V代替。二、音节 汉语生字中一...

怎样区分拼音中的声母和拼音,韵母?
1. zhi chi shi ri zi ci si yi wu yu ye yue yuan yin yun ying 其中汉语拼音的声调标注规律:a o e i u ü 标调按顺序:‘i、u并排标后头’,小ü 碰到j q x y 就脱帽(去掉点)。 a母出现不放过, (即韵母中凡是有a的,标在a上。如lao,标在a上)没有a母找...

请问汉语拼音声母和韵母都是多少个啊?
韵母24个:单韵母是a、o、e、i、u、v,复韵母是ai 、ei、 ui 、ao、 ou、 iu 、ie 、ve、 er、 an 、en 、in、 un 、vn 、ang 、eng、 ing 、ong ,前鼻音韵母 an 、en 、in、 un 、vn,后鼻音韵母 ang 、eng、 ing 、ong;整体认读音节:zhi 、chi 、shi 、ri 、zi 、ci...

拼音有多少个声母?
1. zhi chi shi ri zi ci si yi wu yu ye yue yuan yin yun ying 其中汉语拼音的声调标注规律:a o e i u ü 标调按顺序:‘i、u并排标后头’,小ü 碰到j q x y 就脱帽(去掉点)。 a母出现不放过, (即韵母中凡是有a的,标在a上。如lao,标在a上)没有a母找...

汉语拼音有几个声母、几个韵母
1. zhi chi shi ri zi ci si yi wu yu ye yue yuan yin yun ying 其中汉语拼音的声调标注规律:a o e i u ü 标调按顺序:‘i、u并排标后头’,小ü 碰到j q x y 就脱帽(去掉点)。 a母出现不放过, (即韵母中凡是有a的,标在a上。如lao,标在a上)没有a母找...

怎样标注音节的韵母
1. zhi chi shi ri zi ci si yi wu yu ye yue yuan yin yun ying 其中汉语拼音的声调标注规律:a o e i u ü 标调按顺序:‘i、u并排标后头’,小ü 碰到j q x y 就脱帽(去掉点)。 a母出现不放过, (即韵母中凡是有a的,标在a上。如lao,标在a上)没有a母找...

怎样区分声母和韵母?如何读?
1. zhi chi shi ri zi ci si yi wu yu ye yue yuan yin yun ying 其中汉语拼音的声调标注规律:a o e i u ü 标调按顺序:‘i、u并排标后头’,小ü 碰到j q x y 就脱帽(去掉点)。 a母出现不放过, (即韵母中凡是有a的,标在a上。如lao,标在a上)没有a母找...

新建县13769233681: 如何实现组件与组件之间的通信 -
怀许信法: 1)一个Activity通常就是一个单独的屏幕(窗口). (2)Activity之间通过Intent进行通信. (3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明

新建县13769233681: jQuery问题,不显示最后一个children -
怀许信法: 第一段代码,只要点击到 DIV class=“panel”的层,这整个层就会有效果.第二段代码 如果要让最后一个<P>W3SCHOOL</p>段有效果 可以试试: $(".panel").children("p").last().slideToggle("slow"); 如果要让 “点击这里”有效果 ,可以试试: $("body").children(".flip").slideToggle("slow");

新建县13769233681: jquery如何获取没有子节点的元素 -
怀许信法: Jquery获取子元素的方法有2种,分别是children()方法和find()方法.下面我们分别来使用这两种方法,看看它们有何差异.children()方法:获取该元素下的直接子集元素 find()方法:获取该元素下的所有子集元素 分别以以下HTML代...

新建县13769233681: vuex怎么实现组件之间的通信 -
怀许信法: 前在项目中有这么两个平行的vue.js组件, 都挂载在$el:document.body下:hall和detail 现在的情况是, detail中的某个值改变了, 需要在hall中的某个值也作出相应的改变. 本来是想做父子组件的, 但项目框架如此, 改还要牵扯到很多, 暂缓...

新建县13769233681: vue 可以遍历数组后然后相加吗 -
怀许信法: var arrs = []; function haha(){ var data = [ { name: '中国', children: [ { name: '第三节课', }, { name: '教', children: [ { name: '大一', children: [ { name: '课程1', children: [ { name: '1231' }, { name: '121' } ] }, { name:

新建县13769233681: 怎么利用Vue实现3个级别的联动 -
怀许信法: <!doctype html><html><head> <title>Vue Demo</title></head><body id="example"> <!-- item template --> <script type="text/x-template" id="item-template"> <li> <input type="checkbox" v-model="model.selected" /> <div :class="{bold...

新建县13769233681: JQUERY 判断如果子元素没有含有某标签(如UL) -
怀许信法: 1、在HBuilder创建的Web项目,指定目录下创建静态页面has.html.2、在<body></body>元素内插入一个div和有序列表,并定义有序列表奇数和偶数行样式.3、保存代码并在浏览器中预览效果,发现没有奇数和偶数行样式.4、返回到HBuilder编辑工具,修改样式代码,将冒号换成nth-of-type.5、再次保存代码并预览效果,可以看到奇数行和偶数行间隔色样式.6、给第一个li和第四个li添加内标签label,然后使用has函数方法判断,判断子元素没有含有某标签.

新建县13769233681: 错误 1 命名空间“System”中不存在类型或命名空间名称“DirectoryServices”.是否缺少程序集引用? -
怀许信法: 右键在引用文件夹点击,添加-项目-浏览-DirectoryServices.dll就可以了

新建县13769233681: c语言 为什么我输出什么也没有? -
怀许信法: 首先指出你代码的错误,一个是判断应该是cnt==0,就是我注释的那个.其次循环不能不加条件,比如你man=1,women=1,children就会从1迭代到无穷.因为children跳不出来,程序就会进入死循环.#include int main() { int Man, Women,...

新建县13769233681: 求英语单词中单数变复数的规则 -
怀许信法: 英语名词单数变复数 1)规则变化: 名词单数变复数,一般加-s没有错. 词尾s,x,sh,ch,直接加上-es. f,fe为结尾,加-s之前要变ve. "辅音字母+y"来结尾,y变i再加-...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网