2015-10-20 980 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它应该是 - 你有什么问题? –