我的问题是关于生命周期方法的反应,现在我有以下情况: Ajax在父组件的 componentDidMount 中获取了一些数据,然后将该数据作为道具传递给子组件,现在我们在子组件中,因此我们可以实现不同的生命周期方法,
componentDidMount :无法看到道具的真实值,例如记录日期,它会返回空数组而不是所需的数组
componentWillMount :相同。
componentWillReceiveProps :如果不使用 nextProps
,则相同componentDidUpdate :记录数据将返回以prop形式传递的所需数据
渲染:返回所需数据
所以我应该总是被迫在componentDidUpdate或render中调用我的数据吗?,有没有一种方法可以在没有redux的情况下进行管理?
答案 0 :(得分:1)
您孩子的componentWillMount
和componentDidMount
可能仅收到一个空数组(我认为这是默认值),因为在返回API结果之前,例如,实例化了Child组件。 <Child result={result} />
,而不是result.length > 0 && <Child result={result} />
。挂载只发生一次,然后每次componentDidUpdate
发生一次道具更改。
假设您只是显示向下传递的数据,那么在渲染中处理它是完全可以接受的。否则,如果您要执行其他副作用,则请在父组件(段落上方)中检查其完整性,此时您应该能够在子项componentDidMount
中看到完整的值。或者,您可以按照建议在孩子的componentDidUpdate
中执行完整性检查,然后在那里处理。