Вы хотите создать «управляемый» компонент , поскольку в React следует контролировать состояние элемента, а не DOM.
Вы на полпути, простопара настроек: https://jsfiddle.net/tombarton/2s5q398c/3/
class TextArea extends React.Component {
constructor(props) {
super(props)
this.state = {
inputValue: 'Here is some content...'
}
this.onTextareaChange = this.onTextareaChange.bind(this);
}
onTextareaChange(e) {
const { value } = e.target;
this.setState(state => ({
...state,
inputValue: value,
}))
}
render() {
return (
<div>
<textarea value={this.state.inputValue} onChange={this.onTextareaChange} />
</div>
)
}
}
ReactDOM.render(<TextArea />, document.querySelector("#app"))
Как видите, мы присваиваем значение из состояния компонента атрибуту value
элемента textarea
.Для завершения процесса мы назначаем метод для обновления состояния атрибута onChange
элемента.Когда происходит событие onChange
, оно передается в наш метод, мы извлекаем обновленное значение и обновляем состояние нашего компонента.Поскольку мы передаем наш метод за пределы класса, мы должны привязать к нему this
, как вы можете видеть в конструкторе.
Надеюсь, что это поможет.