【发布时间】:2019-03-14 03:20:44
【问题描述】:
问题陈述:
我想编写我的 react 应用程序,以根据标志的值使用一组特定的组件。
例如:
我有一个默认由三个组件组成的 App 组件:
组件A、组件B和组件C。
<App>
<ComponentA />
<ComponentB />
<ComponentC />
<App/>
现在,如果我的标志等于 ShowC,我希望我的应用程序渲染 ComponentA、ComponentB 和 ComponentC。
如果标志等于 ShowD,那么我想要渲染 ComponentD 而不是 ComponentC。
<App>
<ComponentA />
<ComponentB />
<ComponentD />
<App/>
解决办法:
我使用了一个配置对象,该对象将相应的导入作为键值对:
{
showC: {
pos1: ComponentA,
pos2: ComponentB,
pos3: ComponentC,
},
showD: {
pos1: ComponentA,
pos2: ComponentB,
pos3: ComponentD,
}
}
现在,在我的主 App.js 中:
render() {
const {
pos1: FirstComponent,
pos2: SecondComponent,
pos3: ThirdComponent
} = config[<flag>];
<App>
<FirstComponent />
<SecondComponent />
<ThirdComponent />
</App>
}
我在 stackblitz 上创建了一个简单的示例来说明这一点。
https://stackblitz.com/edit/react-app-components-config?file=index.js
我想了解以这种方式组合组件是否被视为 React 中的反模式?或者是否有更好的解决方案?
【问题讨论】:
标签: reactjs components composition