在React组件中使用getDerivedStateFromProps
生命周期方法时,返回的状态是完全覆盖组件的现有状态,还是只更新返回的特定状态属性?例如,
class foo extends Component {
constructor() {
this.state = {
one: true,
two: false,
}
}
getDerivedStateFromProps(props, state) {
...
return {
one: false,
}
}
...
}
状态是否会是:
{ one: false }
或
{
one: false,
two: false,
}
发布于 2018-07-13 08:19:04
它将更新您返回的对象中存在的状态片段,并保持另一个状态as it is stated in the documentation不变
getDerivedStateFromProps
在调用render方法之前调用,无论是在初始装载时还是在后续更新时都是如此。它应该返回一个对象来更新状态,或者返回null来不更新任何内容。
示例
class App extends React.Component {
state = { one: 1 };
static getDerivedStateFromProps() {
return { two: 2 };
}
render() {
return <div>{JSON.stringify(this.state)}</div>;
}
}
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://unpkg.com/react@16.4.1/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.4.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>
https://stackoverflow.com/questions/51316068
复制相似问题