React. Проектирование компонентов
От: peer  
Дата: 14.04.25 12:00
Оценка:
Привет.

Дошел до этапа проектирования компонентов в реакте и встал вопрос как делить компоненты по ролям.
Есть 3 роли в системе.
Общий вид одинаковый для всех: слева меню, справа отображение либо грид либо таблица.
Просто у админа в меню больше элементов, а справа всё доступно.
А у простого сотрудника в меню вместо 5 элементов меню всего один, а справа грид и таблица только на чтение, хотя у админа в этой таблице и гриде есть доп.кнопки.

Вопрос: как делить на компоненты? Делать один компонент Меню для всех ролей и его уже наполнять в зависимости от роли или же сделать 3 разных компонента для каждой роли со статическим наполнением? Для таблицы и грида тоже визуально выглядят одинаково, просто у админа есть доп.кнопки на которые открываются доп.окна.
Re: React. Проектирование компонентов
От: Qulac Россия  
Дата: 14.04.25 13:20
Оценка: 2 (1)
Здравствуйте, peer, Вы писали:

P>Привет.


P>Дошел до этапа проектирования компонентов в реакте и встал вопрос как делить компоненты по ролям.

P>Есть 3 роли в системе.
P>Общий вид одинаковый для всех: слева меню, справа отображение либо грид либо таблица.
P>Просто у админа в меню больше элементов, а справа всё доступно.
P>А у простого сотрудника в меню вместо 5 элементов меню всего один, а справа грид и таблица только на чтение, хотя у админа в этой таблице и гриде есть доп.кнопки.

P>Вопрос: как делить на компоненты? Делать один компонент Меню для всех ролей и его уже наполнять в зависимости от роли или же сделать 3 разных компонента для каждой роли со статическим наполнением? Для таблицы и грида тоже визуально выглядят одинаково, просто у админа есть доп.кнопки на которые открываются доп.окна.


Интерфейс лучше всего проектировать по функционалу, а не по ролям. Т.е. есть например вкладка "Администрирование", кладка "Должники" и т.д. а доступность, видимость и активность элементов определять на основе прав пользователя, если предполагается, что права пользователя могут настраиваться по желанию. Так что первый вариант лучше.

P.S. React — среди spа-фреймворков, это как js среди языков.
Программа – это мысли спрессованные в код
Re: React. Проектирование компонентов
От: DiPaolo Россия  
Дата: 14.04.25 16:18
Оценка: 3 (1)
P>Делать один компонент Меню для всех ролей и его уже наполнять в зависимости от роли
Да

P>Для таблицы и грида тоже визуально выглядят одинаково, просто у админа есть доп.кнопки на которые открываются доп.окна.

Тоже делать один компонент

Пока достаточно будет самой простой реализации: в компонент через пропсы прикидывается роль (уже можно через енум сделать) и в зависимости от роли рендерятся те или иные части компонента.

Позже, если роли будут навороченнее и компонент будет больше — можно будет делать примерно так (authProvider, canAccess() и прочее) https://github.com/marmelab/react-admin/blob/master/docs/Permissions.md
Патриот здравого смысла
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.