2015-10-20 50 views
7

我正在研究一個基本上是記事本的項目。我在通過ajax調用進行更新時遇到問題。我嘗試設置textarea的值屬性,但不能對其值進行更改。我怎樣才能使它在狀態改變時改變textarea的值並且可以被編輯。React修改Textarea值

我有的代碼如下。

在父類

<Editor name={this.state.fileData} /> 

在編輯器類

var Editor = React.createClass({ 
render: function() { 
return (
    <form id="noter-save-form" method="POST"> 
    <textarea id="noter-text-area" name="textarea" value={this.props.name}></textarea> 
    <input type="submit" value="Save" /> 
    </form> 
); 
} 

});

我不能使用defaultValue,因爲textarea的值在頁面加載時是未知的,當我嘗試在textareas之間放置數據時,什麼都不會發生。我希望它在狀態發生變化時獲取狀態值,但在兩者之間進行編輯。

感謝

編輯

我設法得到它的工作使用jQuery而是想在做反應,而不是,我稱此之前渲染:

$('#noter-text-area').val(this.props.name); 
+0

的例子直接拷貝您正在尋找的onChange,從陣營文檔? https://facebook.github.io/react/docs/forms.html#controlled-components – Hypaethral

+0

更改是在textarea的值更改時發生。我真的不需要這樣做,只是希望textarea在其父類的狀態更改時進行更新。 – phlie

+0

你確定父母的狀態實際上在變化嗎? – Hypaethral

回答

15

我認爲你想要的東西沿線:

父母:

<Editor name={this.state.fileData} /> 

編輯:

var Editor = React.createClass({ 
    displayName: 'Editor', 
    propTypes: { 
    name: React.PropTypes.string.isRequired 
    }, 
    getInitialState: function() { 
    return { 
     value: this.props.name 
    }; 
    }, 
    handleChange: function(event) { 
    this.setState({value: event.target.value}); 
    }, 
    render: function() { 
    return (
     <form id="noter-save-form" method="POST"> 
     <textarea id="noter-text-area" name="textarea" value={this.state.value} onChange={this.handleChange}></textarea> 
     <input type="submit" value="Save" /> 
     </form> 
    ); 
    } 
}); 

這基本上是提供https://facebook.github.io/react/docs/forms.html

+0

謝謝,並感謝您的鏈接。 – phlie

+0

但文本在textarea中不可編輯。如何解決這個問題? @phlie –

+0

@Bhanuprathap它應該是 - 你有什麼問題? –