2017-09-11 118 views
0

我遇到了這種情況,我不得不將父項容器組件中的道具傳遞給子容器組件,以便子容器中的表示組件具有初始狀態。是否有另一種方法來解決這個問題?這是不是皺起了眉頭?Redux - 將道具傳遞給兒童容器組件可以嗎?

+0

你能更具體嗎?爲什麼兒童組件需要道具的「初始狀態」?爲什麼這取決於這些道具是來自父母的環境還是減少? – gravityplanx

+0

我有一些數據從rails服務器傳遞到父容器組件。我需要將這些數據傳遞給子容器組件,然後傳遞給愚蠢的視圖。我是否僅僅通過發送的道具派發一個動作並更新初始狀態?但是,即使這樣我也必須將它傳遞給子容器。 – linuxNoob

+0

如果我將它作爲redux狀態的一部分進行更新,我不必將其最後一條語句放棄。 – linuxNoob

回答

3

Redux是否正在使用父容器中的數據(您所說的數據爲「from rails」)?如果不是,那麼這是你真正的問題。 Redux應該是反應容器的唯一信息來源。反過來,Redux應該接受來自Rails應用程序的信息並將該信息存儲在其全局狀態中。

一旦你達到了這個目標,你現在就有了一個真實的信息來源,將所有信息輸入到React容器中。

如果子組件需要任何信息,它應該從父容器的redux狀態信息中接收它們。

可以有嵌套的子組件。只需繼續將信息從1層傳遞到下一層。例如。從Redux接收name的ContainerA可以使用name={this.props.name}呈現ComponentX,然後ComponentX可以再次使用name={this.props.name}呈現ComponentY。這導致ComponentY通過父組件和容器傳遞來自Redux的信息。

您的應用程序自然應該具有比容器多得多的組件。這是好事。組件本質上是可重複使用的,因爲它們僅與數據形狀相關聯,而不是數據。謹慎使用容器,並且僅在您想要將特定信息插入一系列組件時使用。

+0

謝謝,這有幫助。當你說'ContainerA,它接收來自'redux'的名字,你的意思是通過'getState()'接收它嗎?我可能會錯過一些東西,但我的印象是,mapStateFromProps'只會在動作分派時觸發。 – linuxNoob

+1

你應該使用'mapStateFromProps',而不是''getState'手動。你是對的,這隻會在調度中觸發,這反過來意味着你應該通過調度來使用軌道信息以將其存儲在Redux中。根據你如何從rails中檢索它將決定你如何這樣做,但目標應該是通過相同的數據流路由所有內容,這意味着所有傳入的數據都應該導致redux調度。 – gravityplanx

相關問題