Для обновления объекта props
в дочерних компонентах обычно используется метод жизненного цикла ComponentWillReceiveProps
.Но я понял, что props
для дочернего компонента можно обновить без прослушивания для ComponentWillReceiveProps
.
Например, в следующем компоненте с именем App
дочерний компонент Comp
может получатьprops
без прослушивания для метода жизненного цикла ComponentWillReceiveProps
.
Основной App
компонент:
import React from 'react';
import ReactDOM from 'react-dom';
import {Comp} from "./comp";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
counter: 0
}
this.incrementCounter = this.incrementCounter.bind(this);
}
componentDidMount() {
this.setState({
counter: 100
})
}
incrementCounter() {
this.setState({
counter: this.state.counter + 1
})
}
render() {
return (
<div>
<button onClick={this.incrementCounter}>Increment</button>
<br />
<br />
<Comp counter={this.state.counter}/>
</div>
)
}
}
ReactDOM.render(<App />, document.getElementById('container'));
и дочерний Comp
компонент:
import React from 'react';
export class Comp extends React.Component {
constructor(props) {
super(props);
this.state = {}
}
componentDidUpdate(prevProps, prevState) {
console.log("prev props ", prevProps);
console.log("prev state", prevState)
}
render() {
return <span>Props received: {JSON.stringify(this.props)}</span>
}
}
Вот также рабочая демонстрация приведенного выше кода, которую я подготовил
Вы увидите, что дочерний компонент Comp
получает свойство counter
без прослушивания для любого метода жизненного цикла.
Что это значит?Я что-то упустил?