2017-01-01 77 views
0

我的一位朋友正在用React重新創建這個TV shows guide我應該使用Redux來避免道具造成的無限循環嗎?

現在他有一個道具,如moveScrollPosition當您移動小時滾動時處理滾動。它傳遞道具並移動電視節目指南。當你移動程序並且它調用相同的道具時,問題就出現了。程序位置移動並調用prop來移動指南。這裏有一個無限循環,因爲小時滾動調用支柱來移動電視節目。

他應該使用Redux在外面存儲全局滾動位置嗎?這樣,小時滾動和電視節目滾動都會調用動作並更新滾動位置。電視節目不會調用相同的道具,只需依靠Redux的道具和小時滾動。

澄清:

1)小時選擇器 - >支柱 - >電視節目

2)的電視節目 - >支柱 - >小時滾動 - >支柱 - >電視節目 - > loop

問候。

+0

無限循環的一個可能的原因通常是嘗試在渲染過程中更新狀態應用程序,因此在渲染方法中。你能發佈你的代碼嗎? –

回答

1

它不一定非得是redux。

一般而言,您需要一些父組件來維護將作爲道具傳遞給兒童的狀態(滾動位置)。它還需要一個更新滾動位置的功能。這個函數也會作爲prop傳遞給兩個子組件。每當子組件更新滾動時,父組件都將更新狀態,並將作爲道具傳遞給兒童。

1

通常,您需要實施防護以防止對後端進行異步調用。

如果您在componentDidMountcomponentWillReceiveProps中調用後端,那麼當結果發佈時可能會重新渲染,這會導致對該異步方法的新調用。如果沒有警衛,你可能會陷入無限循環。