希望不是 xy 问题,react 弃用了一些生命周期方法,我们使用组件将挂载在我们的父组件之一中进行 api 调用,因为子内容取决于从此 api 调用返回的内容。
当时我们不能使用 componentDidMount 进行调用,因为子组件生命周期方法在父组件的 componentDidMount 之前触发。
如果使用条件呈现仅在 API 响应返回并更新状态后呈现子组件,则将 API 调用放入componentDidMount
中将起作用。像这样:
render() {
return (
<div>
parent component stuff
{ this.state.apiResults ? <Child apiResults={this.state.apiResults} /> : null }
</div>
);
}
其中,fetch
结果更新apiResults
状态。
您有三个选择:
- 将
componentWillMount
切换到UNSAFE_componentWillMount
。这是一个短期修复,在 React 17 中不起作用,因此不建议使用。 - 如果组件是类组件,请将 API 代码移动到组件的构造函数。
- 将您的组件转换为功能组件并将其移动到
useEffect
内。建议这样做:
useEffect(() => {
// API code
}, []);