Как обновить родительское состояние из дочернего компонента в React

Возможно, вы захотите изменить некоторые свойства в состоянии родительского компонента из дочернего компонента. Хотя нет прямого способа добавления ссылок, как вы делаете, когда вы хотите добиться общения между родителями и детьми, Вы все еще можете достичь этого косвенно. Чтобы установить связь между родителями и детьми, вы можете отправить функцию в качестве проповеди для дочернего компонента. Эта функция должна делать все, что нужно в компоненте, например, изменять состояние какого-либо свойства.

Рассмотрим следующий родительский компонент:

class Parent extends React.Component {
constructor(props) {
super(props)
// Bind the this context to the handler function
this.handler = this.handler.bind(this);
// Set some state
this.state = {
messageShown: false
};
}
// This method will be sent to the child component
handler() {
this.setState({
messageShown: true
});
}
// Render the child component and set the action property with the handler as value
render() {
return
}
}

Состояние этого родительского компонента имеет messageShown свойство, которое мы хотим изменить по какой-то причине из дочернего компонента. В родительском элементе мы отрендерим дочерний компонент и отправим как свойство (в данном случае action) handler Функция объявлена ​​в родительском.

Дочерний компонент в этом случае очень прост, он нарисует кнопку, действие которой Prop (отправлено в родительском компоненте) будет запущено при нажатии кнопки:

class Child extends React.Component {
render() {
return (
{/* The button will execute the handler function set by the parent component */}
)
}
}

Таким образом, вы можете легко выполнять родительские функции из вашего дочернего компонента.

Ссылка на основную публикацию
Adblock
detector