Я предполагаю, что ваш дочерний компонент будет таким, как показано ниже, проблема в конструкторе Child, я полагаю, вы инициализируете его состояние.
class Child extends React.Component {
constructor(props) {
super(props);
this.state = {
value: 'init-value' // or null
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
....
}
render() {
return (
....
<input value={this.state.value} onChange={this.handleChange} />
....
);
}
}
this.props.sendValue
- функция, переданная (принадлежит)Родительский компонент и включает в себя оператор setState
.Если бы он был запущен, произошел бы повторный рендеринг родительского компонента.
В функции handleChange(e)
после
this.setState({ input: value }, console.log('state', this.state));
, которая изменяет состояние дочернего элемента
this.props.sendValue(`${value}\r`);
повторно визуализировать родительский компонент, и, конечно, в него вовлечен Child. Поэтому значение state
снова инициализируется, и, похоже, ничего не происходит.
Может быть, вы хотите использовать реквизит из родительского компонента, чтобы придать значение state.value
.