React
我在<= 16.2中这样做了:
componentDidMount () {
fetchData(this.props.id)
}
componentWillReceiveProps(nextProps) {
if (this.props.id !== nextProps.id) {
fetchData(nextProps.id)
}
}
render() {
if (this.props.isLoading) {
return <Loader />
} else {
return <SuperComp this.props.data />
}
}
该组件已连接,并且fetchData
是redux-thunk
管理简单状态的操作创建者:{ isLoading: ..., data }
. 我们可以在后续请求中添加错误处理和取消,但目前超出了范围。
其基础是组件在每次 id prop 更改时都请求它自己的数据,但每次 id prop 更改时只请求一次。
我不知道它是如何在React
16.4 中正确完成的,这getDerivedStateFromProps
是一个静态同步的东西,它返回新的状态。
bvaughn 在 github 上有一个很长的评论,但是它直接将数据存储在 state 中,并在数据为 null 时启动 refetch。但是,如果我将数据存储在 中redux
,我不能只是将我的数据清空getDerivedStateFromProps
(或者我可以吗?)。
有人可以解释我如何在“现代”中做同样的事情React
吗?