我正在开发我的第一个React项目,我对如何解决这种情况感到困惑。根据路由切换React组件属性
Header
组件支持多种不同的主题,我需要根据所显示的页面切换。这是我的根组件:
export default class App extends React.Component {
render() {
return (
<Router>
<div>
<Header theme='light' />
<Switch>
<Route exact path='/' />
<Route exact path='/about' component={About} />
<Route exact path='/clients' component={Clients} />
<Route exact path='/services' component={Services} />
</Switch>
</div>
</Router>
);
}
}
的Header
组件可以接收一个theme
属性(的light
之一,dark
和solid
)。我想从路由呈现的组件内部更改此属性。
我目前的想法是添加一个setHeaderTheme
方法到App
组件,并将这个函数传递给组件,但我不能解决a)如何通过路由传递附加属性到组件,b)如果这是平坦的最好的行动方针。
谢谢你的建议看看。我能否问一个快速的后续问题,在Clients组件中设置标题主题的最佳位置在哪里?该命令是否属于生命周期回调? –
看起来,标题最初有一个默认配置,您将在路由组件中进行更改。一旦进入像客户端这样的路由组件,您可以在早期的生命周期中更改标题,如componentWillMount(),因为您不会更改客户端组件的状态,也不会看到依赖关系。 – dpetrini