【发布时间】:2017-07-24 16:36:27
【问题描述】:
好的,所以我在 react 编程时遇到了问题,我发现这是一个常见的问题。如果我有多个嵌套组件,就我而言,我有:
<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> 中的所有组件,它们无权访问商店或我的任何动作创建者。如何从深度嵌套的组件中修改我的商店,以便我可以更改父组件而无需向下传递大量回调函数?或者这只是不正确的架构?我以为 redux 会解决这个问题,但它没有。
是的,我已经连接了我的组件。我只是不喜欢将 store.state 信息作为 props 传递的想法,因为它对于许多嵌套组件来说非常多余。
【问题讨论】:
-
您没有正确使用 redux。 selectedTab 应该来自 store.state。它应该使用传递给它的属性。单击按钮时,应更新商店状态以反映所选选项卡。听起来您还需要连接组件。只是用 Provider 包装它,并没有像你想的那样给它访问权限。 redux.js.org/docs/basics/UsageWithReact.html
-
能否请您添加我们为您的商店、组件和操作编写的代码,以便我们提供帮助?
-
@NormCrandall 我正在使用 connect() 以便我可以通过 props 访问 currentTab
标签: javascript reactjs redux