React - 在render()中有很多逻辑是不好的形式?

时间:2017-08-24 11:05:30

标签: reactjs

所以,我有一个名为Project的组件,其中有一个名为ProjectDates的孩子。ProjectDates收到其父母的开始/结束日期,以及计算完成百分比。

我目前正在render()进行此计算,因此我不必在componentDidUpdatecomponentDidMount中进行此计算。这是正确的,还是我应该使用更合适的生命周期钩子?

1 个答案:

答案 0 :(得分:2)

我认为你的所有建议都是错误的。让我们一个接一个:

1) componentWillMount 。你可以在这里有一些逻辑 - 但是not recommended在这里引入任何侧面依赖关系。所以在真正的世界中,你通常需要与后端进行交互 - 它的帮助很小。必须更好的选择 - componentDidMount你没有这样的限制。

2) componentWillUpdate 。你应该在这里小心 - 不要以无限循环结束。在此处setState调用componentWillUpdate可能会再次呼叫componentWillReceiveProps,依此类推。考虑使用is prohibited

3)渲染。除了准备(呈现)组件内容的逻辑之外,此方法不应包含任何其他逻辑。考虑将您的“业务”逻辑移至componentDidMount / ul或构造函数(如果适用)。

我建议在做出有关您的架构的决定之前先通过官方componentWillReceiveProps