【发布时间】:2020-05-02 15:19:03
【问题描述】:
我有一个组件,我为它设置了初始状态。在我的情况下,当我更改复选框状态时,父组件应该发送带有标志“true”或“false”的新属性,如果我在我的渲染方法中 console.log 它会这样做。但是,如果我使用生命周期方法静态 getDerivedStateFromProps - 它只显示来自先前状态和新道具的更新值(如“true”、“true”而不是先前的“false”和新的“true”)。问题是:想不通,这里的陷阱在哪里?如果我在我的渲染方法中 console.log 它会发送新的道具,但 getDerivedStateFromProps 在 prevState 和 newProps 中显示相同的值。
class MyComponent extends React.PureComponent {
state = {
stateValue: this.props.myValue
}
handleChange = () => {
// Custom parent method which change checkbox state and send new props to MyComponent
this.props.onChange(...)
}
static getDerivedStateFromProps(nextProps, prevState) {
const { myNextProperty } = nextProps
const { myPrevStateProperpty } = prevState
debugger
if (myNextProperty !== myPrevStateProperpty) {
return {
stateValue: nextProps,
}
}
return null
}
render() {
const { stateValue } = this.state
return (
<MyViewComponent onChange={this.handleChange} value={stateValue} />
)
}
}
【问题讨论】:
标签: reactjs