我想要实现的是一个文本区域,它从一行开始,但会增长到 4 行,如果用户继续键入,则此时开始滚动。我有一个部分解决方案有点工作,它会增长,然后在达到最大值时停止,但是如果您删除文本,它不会像我希望的那样缩小。
这就是我迄今为止所拥有的。
export class foo extends React.Component {
constructor(props) {
super(props);
this.state = {
textareaHeight: 38
};
}
handleKeyUp(evt) {
// Max: 75px Min: 38px
let newHeight = Math.max(Math.min(evt.target.scrollHeight + 2, 75), 38);
if (newHeight !== this.state.textareaHeight) {
this.setState({
textareaHeight: newHeight
});
}
}
render() {
let textareaStyle = { height: this.state.textareaHeight };
return (
<div>
<textarea onKeyUp={this.handleKeyUp.bind(this)} style={textareaStyle}/>
</div>
);
}
}
显然,问题是scrollHeight
当height
设置为更大的值时不会缩小。关于如何解决此问题的任何建议,以便在删除文本时它也会缩小?