#reactjs
Вопрос:
Я думаю, что ответ отрицательный, но я просто хотел подтвердить. Чтобы вызвать componentDidUpdate для родителя, нам нужно будет обновить состояние родителей, верно? Простого обновления состояния детей недостаточно, верно?
Заранее спасибо.
Ответ №1:
Самый простой способ узнать это-попробовать…
Здесь вы можете видеть, что: Нет, он не будет вызывать родительский componentDidUpdate
, если состояние родителя (или его родителя) не изменится.
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = { value: 'parent' }
}
componentDidUpdate() {
console.log('Parent Updated');
}
onChange = (e) => {
this.setState({ value: e.target.value });
}
render() {
return <Child value={this.state.value} onChange={this.onChange} />
}
}
class Child extends React.Component {
constructor(props) {
super(props);
this.state = { value: 'child' }
}
componentDidUpdate() {
console.log('Child Updated');
}
onChange = (e) => {
this.setState({ value: e.target.value });
}
render() {
return (
<div>
<div>
<input value={this.props.value} onChange={this.props.onChange} />
</div>
<div>
<input value={this.state.value} onChange={this.onChange} />
</div>
</div>
);
}
}
ReactDOM.render(<Parent />, document.getElementById('react'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="react"/>