Size: a a a

React — русскоговорящее сообщество

2020 August 14

🧨

🧨 ethorz in React — русскоговорящее сообщество
dron
Как вы реализуте попапы в приложении? Вот прямо когда их много.

Создаёте портал и туда их пихаете? Если так, то вызываете нужный попап в компоненте? Если вызываете в компоненте, то где вы описываете его содержимое и его поведение? В папочке рядом с компонентом? А если попап, который используется в разных местах, то как?

Или вызываете все попапы в одном месте примерно таким кодом:
{activePopup === popups.PASSWORD_CONFIRM && <PasswordConfirmPopup />}
?
Буду рад вашей помощи 🙂
попап в отдельный компонент, максимально тупой, который порталится в конец боди, из родителя управляется и передаются пропсы, все
источник

d

dron in React — русскоговорящее сообщество
Ещё может быть такой кейс, что первый попап закрывается, открывается второй, но при закрытии второго опять открывается первый с данными, которые там были
источник

VS

Viacheslav Surovets in React — русскоговорящее сообщество
dron
Буду очень благодарен
Я создавал HOC и в негу кидал компаненты и названия класса
источник

d

dron in React — русскоговорящее сообщество
dron
Ещё может быть такой кейс, что первый попап закрывается, открывается второй, но при закрытии второго опять открывается первый с данными, которые там были
И это тоже обязательно нужно учесть
источник

d

dron in React — русскоговорящее сообщество
Ну с таким открытием проблем нет, храним в массиве открытые попапы с их данными
источник

🧨

🧨 ethorz in React — русскоговорящее сообщество
dron
Ещё может быть такой кейс, что первый попап закрывается, открывается второй, но при закрытии второго опять открывается первый с данными, которые там были
хранить в родителе ?
источник

A

Andrey in React — русскоговорящее сообщество
dron
Ну с таким открытием проблем нет, храним в массиве открытые попапы с их данными
какие массивы, выше уже сказали, что просто сверху попапами рулишь как хочешь
источник

🧨

🧨 ethorz in React — русскоговорящее сообщество
главное не велосипедить, что в итоге обернется болью)
источник

d

dron in React — русскоговорящее сообщество
🧨 ethorz
хранить в родителе ?
Состояние?
источник

🧨

🧨 ethorz in React — русскоговорящее сообщество
dron
Состояние?
ну да, каждый попап - тупой компонент, который рендерит и принимает пропсы, вся логика в целевом компоненте, который и является родителем
источник

d

dron in React — русскоговорящее сообщество
🧨 ethorz
ну да, каждый попап - тупой компонент, который рендерит и принимает пропсы, вся логика в целевом компоненте, который и является родителем
Не уверен, что это хорошо масштабируется, когда в попапах много логики
источник

🧨

🧨 ethorz in React — русскоговорящее сообщество
если много логики - выносить в отдельный компонент, который так же принимает пропсы, но и при этом может иметь локальное состояние
источник

V

Vetro in React — русскоговорящее сообщество
Eugene Sternin
скажу по секрету, в некоторых компаниях есть верстальщики и фронты не верстают вообще
И это единственно верное решение)
источник

V

Vetro in React — русскоговорящее сообщество
Сорри за некропостинг
источник

d

dron in React — русскоговорящее сообщество
🧨 ethorz
если много логики - выносить в отдельный компонент, который так же принимает пропсы, но и при этом может иметь локальное состояние
Есть пока такие наброски:

Есть максимально глупый компонент попапа, который рендерит шаблон (просто фиксированная белая карточка поверх экрана и кнопку закрытия с прокинутым экшеном на закрытие) и принимает children – уже контент попапа.

children – это будет уже контент попапа + логика. Сам компонент children сможет либо дёргать стор на нужные данные, либо получать через пропсы эти самые данные.

И вот дальше я немного в ступоре, как более грамотно реализовать "общие" и "уникальные", как их правильней будет открывать – через редакс или вставлять через портал.
Если через портал, то может отпасть логика с очередью попапов. Из уникального попапа (который к примеру принадлежит профилю пользователя) будет открываться "общий" попап (к примеру тарифы или что нить такое). И как тогда реализовывать это через порталы?

Если через редакс, то тогда должен быть общий файл, в котором вызываются нужные попапы, но только по условию, примерный код:

{activePopup === 'A' && <A />}
{activePopup === 'B' && <B />}

Но мне кажется это странным
источник

🧨

🧨 ethorz in React — русскоговорящее сообщество
dron
Есть пока такие наброски:

Есть максимально глупый компонент попапа, который рендерит шаблон (просто фиксированная белая карточка поверх экрана и кнопку закрытия с прокинутым экшеном на закрытие) и принимает children – уже контент попапа.

children – это будет уже контент попапа + логика. Сам компонент children сможет либо дёргать стор на нужные данные, либо получать через пропсы эти самые данные.

И вот дальше я немного в ступоре, как более грамотно реализовать "общие" и "уникальные", как их правильней будет открывать – через редакс или вставлять через портал.
Если через портал, то может отпасть логика с очередью попапов. Из уникального попапа (который к примеру принадлежит профилю пользователя) будет открываться "общий" попап (к примеру тарифы или что нить такое). И как тогда реализовывать это через порталы?

Если через редакс, то тогда должен быть общий файл, в котором вызываются нужные попапы, но только по условию, примерный код:

{activePopup === 'A' && <A />}
{activePopup === 'B' && <B />}

Но мне кажется это странным
switch/case вместо условного рендеринга?
источник

P

Pavel in React — русскоговорящее сообщество
Alex Dugnist
Если у вас сложные пермишины типа ACL или RBAC то лучше создать отдельно класс что будет ими управлять или найти готовое решение, если просто админ/не админ, то бери ключ из Глобал стейта, проверяй и показывай/не показывай. Изи.
а если сделать провайдер и через него прокидывать пермишны как тут - https://github.com/Blevs/react-permissions/tree/lesson
источник

a

az1.zz in React — русскоговорящее сообщество
const content = "Hello please help me.Would be very helpfull!";

const findToDot = content.split(".")[0];
console.log(findToDot);

Как тут можно findToDot точку тоже console log сделать
источник

DT

Daniil Tchernyavsky in React — русскоговорящее сообщество
az1.zz
const content = "Hello please help me.Would be very helpfull!";

const findToDot = content.split(".")[0];
console.log(findToDot);

Как тут можно findToDot точку тоже console log сделать
источник

В

Вадим in React — русскоговорящее сообщество
Использую useautocomplete

Но handleSubmit1 не обрабатывается.  Почему?
источник