2017-08-24 55 views
-2

所以,我有一個名爲Project的組件,它有一個叫ProjectDates的孩子。 ProjectDates收到其父母的開始/結束日期,並計算完成百分比。React - 在render()中有很多邏輯可憐的形式嗎?

我目前正在render()中進行此計算,因此我不必在componentDidUpdatecomponentDidMount中都這樣做。這是正確的,還是有更合適的生命週期掛鉤,我應該使用?

+0

我不知道你的意思是「邏輯」,但不是,你不應該把所有的邏輯放在'render'中。 – Nocebo

回答

1

我認爲你所有的建議都是錯誤的。讓我們一個接一個:

1)componentWillMount。你可以在這裏有一些邏輯 - 但是這裏是not recommended來引入任何的側面依賴關係。所以在真正的世界中,當你通常不得不與後端交互時 - 它的幫助很小。必須有更好的選擇 - componentDidMount你沒有這種限制。

2)componentWillUpdate。在這裏你應該小心 - 不要結束無限循環。在這裏調用setStateis prohibited,因爲它可能再次調用componentWillUpdate等等。考慮使用componentWillReceiveProps

3)render。除了準備(呈現)組件內容的方法之外,此方法不應包含任何其他邏輯。考慮將您的「業務」邏輯移至componentWillReceiveProps/componentDidMount或者可能的構造函數。

我建議在決定你的架構之前,通過官方docs

+0

對不起,我想我可能已經說得不好。現在它更有意義嗎?這似乎沒有包含在文檔中。 – MitchEff

+0

現在你的方法看起來更合適。除了這個事實 - 在'render'中不應該出現'logic'。如果您擔心'componentDidUpdate'和'componentDidMount'中的代碼重複 - 只需在單獨的類方法中移動邏輯並在兩個地方調用它。 – Amid

相關問題