Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043

Вывод компонент в зависимости от props

08.09.2022, 13:46. Показов 1069. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
задумка такова - есть компонент, содержащий в себе другие, скажем такого плана:
<Period />
<Group />
...
в родительский передается прос components={['Period', 'Group'..]}
в зависимости от значений в массиве происходит отрисовка одноименных.
Пока пришёл к выводу, что можно задать функцию, которая будет мапить входящий props.components и уже через if или switch сверять, что выводить, а что нет.
Собственно, вопрос: есть ли возможность без дополнительной проверки выводить компоненты, используя полученный список?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2022, 13:46
Ответы с готовыми решениями:

Передать компонент через props в массиве данных - возможно ли?
Есть генератор табличных данных Vue.component('list-table-data', { props: { table: Array }, template: ` ...

Один и тот же props для многих, одних и тех же компонент
Здравствуйте, уважаемые форумчане. Работая над проектом, делаю так: let lrs = 3; (в реальности считывается из БД здесь) for (var...

Использование constructor(props) super(props)
Компоненты в React, я знаю, можно задать двумя способами - как класс и как функцию(стрелочную или обычную). У меня компоненты заданы как...

4
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3836 / 1680 / 431
Регистрация: 14.03.2022
Сообщений: 4,245
08.09.2022, 14:14
Можно сделать некую "дэфку" на основании которой мотом "мапить" компоненты...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
import Period from './period'
import Group from './group'
...
def = {
   Period, 
   Group,
   ...
}
 
...
{components.map(el => def[el] ? def[el] : null)}
...
1
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043
08.09.2022, 16:46  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Можно сделать некую "дэфку"
о, и правда, спасибо!

Добавлено через 38 минут
Цитата Сообщение от krvsa Посмотреть сообщение
Можно сделать некую "дэфку" на основании которой мотом "мапить" компоненты...
а нет, не сработало. если в мапе прописывать условия по совпадению значений из массива, компоненты отрисовываются, с вашим вариантом нет. и в консоли тишина
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3836 / 1680 / 431
Регистрация: 14.03.2022
Сообщений: 4,245
08.09.2022, 16:59
Лучший ответ Сообщение было отмечено Splaisto как решение

Решение

А так?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import React from "react"
 
import Period from './period'
import Group from './group'
...
def = {
   Period, 
   Group,
   ...
}
 
...
{components.map((el, i) => def[el] ? React.createElement(def[el], {key: i}) : null)}
...
Добавлено через 8 минут
У меня заработало...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React from 'react';
import ReactDOM from 'react-dom/client';
import './tmp.css'
 
const Itm1 = props => {
    return (
        <p>Itm 1</p>
    );
};
const Itm2 = props => {
    return (
        <p>Itm 2</p>
    );
};
 
const def = {Itm1, Itm2}
 
const Test = props => {
    return (
        <div>
            {props.list.map((el, i) => def[el] ? React.createElement(def[el], {key: i}) : null)}
        </div>
    );
};
 
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <Test list={['Itm1', 'Itm2']} />
);
0
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043
08.09.2022, 17:06  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
React.createElement
помогло, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2022, 17:06
Помогаю со студенческими работами здесь

Изменение размера окна в зависимости от компонент
добавляю напанель JTextField с параметром setVisible(false);, в определённый момент нужно чтобы часть из таких компонент стали...

Как масштабировать компонент page в зависимости от разрешения экрана?
Подскажите пожалуйста может кто-нибудь знает, каким свойством можно масштабировать компонент page в зависимости от разрешения экрана? ...

[WPF] Триггер, изменяющий компонент в зависимости от состояния другого компонента
Доброго времени суток! Помогите пож-та советом, нигде не могу найти решение проблемы. Ситуация: (WPF, Visual Studio 2017) Есть...

Компонент Wizard: как пропустить вторую страницу в зависимости от условия
Имеется Компонент Wizard, с 3 страничками на нем. Собственно, хотелось бы, что в зависимости от условия на первой странице, к примеру...

Props в react
В документации react есть такой пример function formatDate(date) { return date.toLocaleDateString(); } function Comment(props)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru