代码之家  ›  专栏  ›  技术社区  ›  CraZyDroiD

text根据分配给值的内容大小调整区域高度

  •  0
  • CraZyDroiD  · 技术社区  · 6 年前

    我在react应用程序中使用了一个textarea。我在文本区域中显示了一些文本,但问题是当文本很长时,文本区域不会展开以显示全文,而是会向下滚动。如何根据设置为的内容大小扩展文本区域 textarea

    我的代码如下

    <div className="width_100">
    
            <textarea className="home_post_text margin_bottom10px" value={this.urlify(postData.heading)}></textarea>
    
     </div>
    

    我的react应用程序就是这样显示的。我必须向下滚动才能看到全文。如何扩展文本区域以显示全文。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   lenilsondc    6 年前

    你可以用, div[contenteditable=true] textarea ; 因为 应该是这样的。如果你要用 您必须在每次输入时调整元素的高度,它很容易成为性能杀手。

    使用 contenteditable div 另一方面,允许您利用默认行为,即增加元素的高度以适合其内容。

    内容可编辑 IE10 及以下)

    div[contenteditable="true"] {
      border: 1px solid grey;
      padding: 5px 10px;
    }
    <div contenteditable="true">
      test
    </div>

    实现文本区域组件 内容可编辑

    <TextArea
        value={myText}
        style={{ 'border': '1px solid grey' }}
        onChange={e => console.log(e.target.value)} />
    

    class TextArea extends React.Component {    
      onChange() {
        var text = ReactDOM.findDOMNode(this).innerText;
        this.props.onChange && this.props.onChange({
          target: {
            value: text
          }
        });
      }
    
      render() {    
        const {props} = this;
    
        return (
          <div
            contentEditable={true}
            dangerouslySetInnerHTML={{ __html: props.value.replace(/\r?\n/g, '<br>') }}
            onInput={this.onChange.bind(this)}
            onBlur={this.onChange.bind(this)}
            {...props}
          />
        )
      }
    }