Как сказал @yBrodsky, вам лучше передать функцию, которая изменяет состояние. Вот пример:
class App extends Component {
constructor() {
super();
this.state = {
name: 'React'
};
this.update=this.update.bind(this);
}
update(nextState) {
this.setState(nextState);
}
render() {
return (
<Child updateParent={this.update} />
);
}
}
const Child = ({updateParent}) => (
<button onClick={() => updateParent({name: 'Foo bar'})}>Click</button>
);
Теперь у вас есть полный контроль над состоянием Родителя у ребенка. Просто передайте объект для мелкого слияния в родительское состояние. В этом примере name
в App
изменится на Foo bar
при нажатии кнопки.