我的问题在标题中:
如何使用React根据文本自动调整文本区域的大小
我想使用Refs动态调整我的textarea高度,并将其传递到状态,但无法正常工作。
我创建了一个codeandbox来帮助您了解我到底想要什么。
https://codesandbox.io/s/ol5277rr25
在我的示例中,我使用Ref来获取textarea的高度,并将其传递给onChange事件中的状态,但是对于键入的每个字母,高度都会增加,但无法正常工作。
另一种解决方案是在换行时将文本区域拆分为一个数组,并为每个换行符增加文本区域的高度(1个换行= 1行)。
但是我无法检测到自动换行符(对于当我按Enter键时没有换行的问题)。
我已经使用了react-autosize-textarea,但是我更喜欢自己做:)
最佳答案
那是因为您得到的是Element.clientHeight
,即CSS Height + Padding。我查看了您的沙盒,您的填充为4px。因此,clientHeight每次增加4px。
解决此问题并动态增加文本区域高度的方法是使用Element.scrollHeight
而不是clientHeight。而已!
编辑:也将填充设置为0。