好吧,所以在編寫回應時遇到了問題,我發現它很常見。如果我有多個嵌套組件,在我的情況,我有:react,redux - 使用redux修改父組件
<AppView>
<Navigation/> // this is a navbar
<ViewHandler currentTab={props.currentTab}/>
<Footer/>
</AppView>
然後在<ViewHandler/>
我有其他啞表象的成分,也有嵌套的組件。如果我在<ViewHandler>
內的深度嵌套組件中有一個按鈕,並且我想通過更改我所在組件上方的許多父組件來響應該按鈕中的onClick,那麼我該怎麼做?在我的情況下,我會對該深度嵌套組件中單擊的按鈕作出反應,然後我想更改<Navigation>
上的選定選項卡。我不想將一些回調函數作爲屬性傳遞下去,因爲它感覺非常透徹。
我學會了redux,因爲我讀過它解決了這個問題。但對我而言,它沒有。我使用react-redux的<Provider>
給<AppView>
訪問我的redux商店,我可以通過道具訪問商店(props.currentTab
)。但是對於嵌套在<AppView>
內的所有組件,他們無法訪問商店或我的任何動作創建者。如何在深度嵌套組件中修改我的商店,以便我可以在不傳遞大量回調函數的情況下更改父組件?或者這只是不正確的架構?我想REDX會解決這個問題,但事實並非如此。
是的,我連接了我的組件。我只是不喜歡將store.state信息作爲道具傳遞的想法,因爲它與許多嵌套組件非常冗餘。
您沒有使用正確Redux的。 selectedTab應該來自store.state。它應該使用傳遞給它的屬性。點擊按鈕時,應更新商店狀態以反映所選標籤。這聽起來像你需要連接組件。只要用Provider包裝它,就不會像你想的那樣給予它訪問。 http://redux.js.org/docs/basics/UsageWithReact.html –
請問您可以添加您爲商店,組件和操作編寫的代碼,以便我們提供幫助? – caisah
@NormCrandall我正在使用connect(),以便我可以通過道具 – jrademacher