我有一个具有顶级<App />
组件的 React 应用程序(从 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">
我要做的是在渲染每个组件时更改appTitle
和theme
状态。<App />
做这个的最好方式是什么?使用 React 的生命周期钩子之一?改变“顶级”状态的其他方法?如果是这样,我如何通过react-router<Route>
组件将操作传递给这些组件?