Формулировка проблемы:
Я хочу составить свое приложение реагирования, чтобы использовать определенный набор компонентов на основе значения флага.
Например:
У меня есть компонент App, состоящий из трех компонентов по умолчанию:
ComponentA, ComponentB и ComponentC.
<App>
<ComponentA />
<ComponentB />
<ComponentC />
<App/>
Теперь, если мой флаг равен ShowC, яхочу, чтобы мое приложение отображало ComponentA, ComponentB и ComponentC.
Если флаг равен ShowD, то вместо ComponentC я хочу вместо этого визуализировать ComponentD.
<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?Или если есть лучшее решение этой проблемы?