好吧,所以在编写回应时遇到了问题,我发现它很常见。如果我有多个嵌套组件,在我的情况,我有: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