【发布时间】:2019-02-28 18:26:12
【问题描述】:
我的问题在标题中: 如何使用 React 根据文本自动调整文本区域的大小
我想用 Refs 动态调整我的 textarea 高度并将其传递给 state,但它不能正常工作。
我创建了一个代码框来帮助您了解我到底想要什么。
https://codesandbox.io/s/ol5277rr25
在我的示例中,我使用 Ref 获取 textarea 高度,并将其传递给 onChange 事件中的状态,但是对于键入的每个字母,高度都会增加,它无法正常工作..
另一种解决方案是在换行时将 textarea 拆分为数组,并且对于每个换行符,增加 textarea 的高度(1 个换行符 = 1 行)。 但我无法检测到 自动 换行符(当我按下 Enter 时换行符没问题)..如果你有想法?
我已经用过 react-autosize-textarea 但我更喜欢自己做 :)
【问题讨论】:
-
这个怎么样——不要使用'height',使用'rows':rows={ this.state.rows} `codesandbox.io/s/ny87x6pzm
-
不工作,对于每个键入的字母,行增加:/
-
实际上,这个做得很好:codepen.io/Libor_G/pen/eyzwOx -- 我不在乎 textarea 的行高是硬编码的,但它工作得很好
-
谢谢@Snowmonkey,它可以工作,但它不是最佳方法,因为如果我们更改 line-height 值,textarea 高度会增加得足够多。但就目前而言,这是我可以测试的所有方法中效果最好的方法..
-
如果您更改 lineheight,可能值得考虑计算它,而不是对其进行硬编码:stackoverflow.com/questions/4392868/…
标签: javascript css reactjs textarea