【发布时间】:2018-06-14 17:14:05
【问题描述】:
我有一个 React 应用程序,它有一个顶级 <App /> 组件(从 create-react-app 开始构建)。我的顶级组件如下所示:
<Header title={this.state.appTitle} theme={this.state.theme} />
<Switch>
{routes.map((route, index) => <Route key={index} {...route} />)}
<Route component={NotFound} />
</Switch>
(routes 是 {component:, to: } 个对象的数组)。 <Route> 渲染的每个组件都使用了一个名为 <Page> 的子组件,我在其中设置了标题并包装了一些内容:
<Page title="About Us">
<p>Content here</p>
</Page>
有时页面可能使用不同的主题,我想在查看该页面时将其应用于<Header />:
<Page title="About Us" theme="alt">
我要做的是在渲染每个组件时更改<App /> 中的appTitle 和theme 状态。做这个的最好方式是什么?使用 React 的生命周期钩子之一?改变“顶级”状态的其他方法?如果是这样,我如何通过 react-router <Route> 组件将操作传递给这些组件?
【问题讨论】:
-
您是否希望
this.state/传递给标头的道具根据传递给<Page />的道具进行更新? -
@paulruescher 有效,是的。
标签: javascript reactjs react-router react-router-v4 react-component