javascript - 如何为具有不同价值道具的不同路线渲染相同的反应组件?
问题描述
我想问一下是否可以为不同的路线渲染相同的反应组件但具有不同的价值道具:
我有这样的事情:
<Switch>
<Route
exact
path="/something1"
render={props => (
<SomeComponent
{...props}
buttonStyle="#65BDE0"
/>
)}
/>
<Route
exact
path="/something2"
render={props => (
<SomeComponent
{...props}
buttonStyle="#FFFFFF"
/>
)}
/>
<Route
exact
path="/something3"
render={props => (
<SomeComponent
{...props}
buttonStyle="#000000"
/>
)}
/>
</Switch>
如您所见,我有三个具有相同组件的不同路由,但每个路由的 buttonStyle 都不同。有没有办法简化这个或一些更好的方法来处理这个?例如,使用一个 Route 组件?谢谢你。
解决方案
我怀疑你可以用一个<Route />
组件来做到这一点,因为 Route 只能有一个路径。
但是,您可以通过创建一系列路线来使其更简洁。
它可能看起来像这样:
const routesWithProps = [
{
path: '/something1',
props: {
buttonStyle: '#65BDE0'
}
},
{
path: '/something2',
props: {
buttonStyle: '#FFFFFF'
}
},
{
path: '/something3',
props: {
buttonStyle: '#000000'
}
},
];
<Switch>
{
routesWithProps.map(route => (
<Route
exact
path={route.path}
key={route.path}
render={props => <SomeComponent {...props} {...route.props} />}
/>
))
}
</Switch>
推荐阅读
- git - Spring Initializr .gitignore 意图(或理解意图)
- c# - “选择”的定义在 CSharpScript.EvaluateAsync 中不起作用
- python - 无法分解嵌套函数正在执行的操作
- css - 如何让内容留在 div 中
- ruby-on-rails - “where”语句中的参数给出“missing end”错误
- reactjs - 你能帮我摆脱这个吗?警告:组件正在将类型搜索的不受控输入更改为受控
- mysql - 将 Workbench 连接到安装在 Windows AWS 上的 MySQL
- python - 如何在 scipy1.0 中创建 a 和 b 之间的对数正态数?
- python - python:将曼彻斯特语法中的owl文件解析为owlready
- ruby - 无法使用捆绑器安装所有 gem 文件:接收无法在任何源中找到 timeout-extensions-0.0.0