Answer the question
In order to leave comments, you need to log in
How does the componentDidUpdate function work?
I'm just learning React and I can't figure out the behavior of the React function. Let's say I have 2 components: parent and child.
class App extends React.Component {
constructor(props) {
super(props);
this.value = '';
}
render() {
return (
<div className="App">
<input onChange={(e) => {
this.value = e.target.value
}}></input>
<button onClick={() => {
this.setState({value: this.value})
}}>Send</button>
{this.state && <Child newValue={this.state.value}/>}
</div>
);
}
}
class Child extends React.Component {
constructor(props) {
super(props);
this.value = null;
}
componentDidUpdate(prevProps, prevState) {
console.log('prevState')
console.log(prevState);
console.log('this.state')
console.log(this.state)
if (prevState === this.state) {
this.setState({value: this.props.newValue})
}
}
render() {
return (
<div>
Hello!
</div>
)
}
}
// я ввёл в поле инпут единицу и нажал два раза button
// так как в первый раз дочерний элемент только монтируется,
// а обновляется только при втором нажатии
prevState
null
this.state
null
prevState
null
this.state
{value: "1"}
// эти выводы покажутся, если я введу 12 и нажму button
prevState
{value: "1"} // почему здесь выводится значение {value: "1"}, а не null?
// Ведь изменение состояния не было.
this.state
{value: "1"}
prevState
{value: "1"}
this.state
{value: "12"}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question