超级好用的vue3组件通讯方式ref+defineExpose

作者: 微前端科正分类: 计算机技术 发布时间: 2024-06-06 13:37:06 浏览:3979 次

超级好用的vue3组件通讯方式ref+defineExpose

helloworld1999:
别想那么多,通通ref一把梭,定义响应式数据不管基本类型还是对象类型都用ref。传递数据时给子组件打上ref标识,组件挂载调用子组件的方法,参数传递父组件数据和修改数据的方法,谁的数据谁修改,保持了单向数据流。且父组件也可以拿到子组件的数据,实现双向通信。ref永远的神[打call][doge]

Nicholas-Panda:
我同事要敢通过ref 传递数据,我锤死他!

【回复】回复 @权先森阿 :你用第三方组件ui时,如果需要定制第三方的组件ui内容,就需要用插糟,插槽相当于子组件给你开放了向下渗透的能力,这个很厉害的
【回复】哈哈哈,谁敢用插槽我也想锤s他
【回复】1、父传子那里,绑定ref响应式数据是没问题的;2、至于ref属性+defineExpose这种用法,我觉得是子组件给了父组件一些受限的可用功能,比如暴露子组件的特定函数给父组件去调用,这个特性好比子组件的插糟solt,给了父组件一些灵活度,但是这个灵活度其实是子组件约定/预谋好的;3、Vue2那才叫一个绝,调用时一旦用了ref这个属性,子组件节点数据那真是什么都一览无余了
清廖凡:
vue2开始就用这种了,$parent没有了[辣眼睛]

kagari_0422:
这种方式其实用的很少。如果是业务场景中,子组件本就不应该持有具体的实现,想通过ref调子组件方法的时候就该反思是不是组件设计的不合理了[doge]

【回复】回复 @木月九夏 :子组件是自己的就想想为什么init要写在子组件里面,通常情况子组件仅声明props与emit events就足够了
【回复】萌新问一下,父组件在经过某一个操作后卫,需要调用子组件init方法,我用的ref的,请问一下有没有更好的解决办法。
【回复】自己的子组件一般不这样写,但是比如,第三方的ui组件会这么写,第三方ui组件会给你提供一些方法口子,让你用ref.function去调某个方法,这个时候你得明白这种应用原理
喷漆王:
vue3最佳实践就是用provide和inject构成一个状态树,类似react

海沦C:
用ref调用其他组件的方法是可以,可以千万别使用ref 传递数据[OK]

【回复】你这说的有失偏颇了,要看应用场景。一个常用的场景就是点击一个修改按钮,修改对应的一行表单数据时,弹出一个修改窗口,修改窗口显示原有数据的情况。通过点击修改按钮,触发点击事件,调用弹出窗组件的方法,把原有数据传递给窗口组件是个完美方案。何况通过ref传递数据也不一定破坏单向数据流,真要修改ref传递给子组件的数据,可以同时传递个修改数据的方法给子组件,这就不保证了单向数据流,谁的数据谁修改
0贰2零:
有个问题问一下,有点像JAVA接口实现的一种组件思路。特征是抽取为外部ts。有个引入设置值,有的引入获取值,然后和组件相关的实现却没有引入这个文件[笑哭]。可能有点乱,如果有看懂的能否告知一下。和我描述有点像的是 若依后台管理系统的弹窗组件封装的hook到底怎么理解,不知道怎么切入[笑哭],外部文件引来引去搞不懂

【回复】我在uniapp弹出层这里用到ref, <uni-popup ref="popup" type="bottom" >底部弹出</uni-popup> ,别人写的弹出层组件,给你暴露open和close这样的方法
【回复】前端的hooks可以理解为对相对独立的一个功能的抽象描述,这种描述是描述视图的:封装的这个功能要展示什么数据?有什么功能?如点哪有什么反应?之类的相关逻辑封装,然后再通过模板语法传属性,监听事件等方式,将你封装好的逻辑织入视图。

编程 前端 通讯 前端开发 Vue 组件 编程开发

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!