2017-06-14 72 views
0

嘿,我有一個問題,改變一個textarea的內容。Textarea與defaultValue不更新​​

這是我的textarea

<textarea 
    className="fixedTextArea" 
    defaultValue={this.props.predefValueSets[this.props.selection].values} 
    onChange={(event) => this.changeHandle(event)} 
/> 

現在,當this.props.selection變化我想有textarea的內容發生變化。 我不能使用value而不是defaultValue,因爲我的textarea必須是可編輯的。

當我在瀏覽器中查看我看到的textarea時,內容如何變化,但沒有反映出來。

任何想法如何處理?

回答

0

適合最適合我的ATM解決方案是使用<div>而不是<textarea>

我使用:

<div 
    className="fixedTextArea" 
    contentEditable 
    suppressContentEditableWarning> 
    {this.props.predefValueSets[this.props.selection].values} 
</div> 

這花了一個簡單的方法來管理onChange(...)(導致<div>不發出onChange事件),但不是在我的具體情況非常重要。

-1

使用ref

<textarea 
    className="fixedTextArea" 
    ref="fixedTextArea" 
    defaultValue={this.props.predefValueSets[this.props.selection].values} 
    onChange={(event) => this.changeHandle(event)} 
/> 

每次變化值,更新文本區域。

changeHandle(value){ 
    this.refs.fixedTextArea.value = value 
} 
+0

你的意思是改變textarea的值,每當'this.props.selection'改變時,對吧?這樣做並不像「反應方式」。直接更新組件不應該是我們的責任。 – EatYaFood

+0

是的,但另一種方式是綁定狀態值,並在每次發生'onChange'時更新狀態, 請參閱https://facebook.github.io/react/docs/forms.html –

+0

是的,你是對的。將它直接添加到狀態將是一種方法。 – EatYaFood