React 监听子元素dom内容高度变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React 监听子元素dom内容高度变化相关的知识,希望对你有一定的参考价值。

参考技术A 需求是这样的,一个聊天窗口,对话框你一句我一句,然后这个对方的回答可能很长,这个时候要检测对方的回答渲染上去后,对应的那条话dom高度有没有超出指定高度,如果超出,就给他多余部分隐藏,并且那条话显示查看更多的按钮,

一开始想的是每一句对话都用各自的ref,然后useEffect每次都去检测ref上的高度,但是其实这样不对,ref如果先绑上了,ref上的属性再变动,是不会触发重新render的也就没法检测到,

看到一个大佬的博客
https://blog.csdn.net/qq_36947128/article/details/104617867?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

再跳到对应的文档

跟想象中的一样,确实ref上的属性变化了,没法通知到我们。
那是因为ref有两种使用方式,
一种是useRef();
一种是通过回调的方式,比如

这种回调的方式可以在每次属性变化的时候监听到,每次都会触发这个回调函数
这里用了useCallback只是为了节省性能而已
https://react.docschina.org/docs/hooks-faq.html#how-can-i-measure-a-dom-node

以上是关于React 监听子元素dom内容高度变化的主要内容,如果未能解决你的问题,请参考以下文章

ReactJs中获取dom元素

jQuery 如何获取到隐藏元素的高度?或者在dom元素可见性改变时能触发个事件也行。

vue和react的区别

在react testing-library中使用DOM元素吗?

vue使用自定义指令监听Dom元素宽高变化

DOM中的事件委托