textarea文本域用來作多行輸入,大部分狀況下都能嗎,知足咱們的需求,可是textarea不能想div元素那樣隨着內容的增多高度自適應,而固定高度又會宣示出滾動條,在移動端這樣的顯示很醜。css
能夠使用div 的contentEditable屬性,使用戶可以編輯元素的內容。而div又能自適應高度,這樣就解決了textarea的不足html
<!-- react -->
<div contentEditable={true} className="text-box" ref={(ref)=>{ this.textEdit = ref }}>
贊成。
</div>
複製代碼
這時在div中輸入的文本包含div,br等dom元素,能夠使用css屬性 -webkit-user-modify 設置用來控制用戶可否對頁面文本進行編輯react
屬性值 | 描述 |
---|---|
read-only | 內容只讀 |
read-write | 內容可讀寫,富文本 |
read-write-plaintext-only | 內容可讀寫,但粘貼內容中的富文本格式(如文本的顏色、大小,圖片等)會丟失。內容相似於以純文本顯示 |
React直接使用contentEditable問報錯,需以下使用:web
componentDidMount () {
this.textEdit.setAttribute('contentEditable', true)
}
render() {
return (
<div> <div className="text-box" ref={(ref)=>{ this.textEdit = ref }}> 贊成。 </div> </div>
)
}
複製代碼