Сергей
Оно пишется в 2 строчки
если что это находится внутри компоненты так, что методы show... hide... можно использовать дальше
Сергей
я немного не понимаю, как можно отрендерить эту модалку, которую я передаю как пропс
Сергей
И что?
то, что мне придётся в каждой компоненте писать <Modal></Modal>.... а если у меня несколько типов модалок, то я тупо захламлю компоненту
Bogdan
я немного не понимаю, как можно отрендерить эту модалку, которую я передаю как пропс
https://www.npmjs.com/package/context-react-modal мож глянуть, вдруг понравится)))) палками только кидать не нужно
Сергей
а если же у меня будет хук, то я опишу его, а потом буду просто вызывать нужный мне по надобности
Kurzdor
может кто видел\делал подобный хук? поделитесь, если не жалко
Видимо это вот это https://github.com/mpontus/react-modal-hook/blob/master/README.md
Сергей
Видимо это вот это https://github.com/mpontus/react-modal-hook/blob/master/README.md
это я уже видел, он мне не очень подходит
Bogdan
спасибо
там дока кривоватая, но суть видно типы есть тоже
Андрей
может кто видел\делал подобный хук? поделитесь, если не жалко
Изучи что такое портал и тебе не понадобятся никакие хуки, контексты, которые тебе пишут выше и подобные излишества.
Сергей
Андрей
я знаю, что такое портал, повтрюсь, реализация через портал мне не подходит
Без проблем. Только твоё "захламление" переходит в хук. Таким образом ты от него не избавишься)
Bogdan
Без проблем. Только твоё "захламление" переходит в хук. Таким образом ты от него не избавишься)
зачем для каждой модкли писать логику, если можно в одном месте написать и переиспользовать?
Андрей
Но если ты нашёл решение - это хорошо.
Андрей
зачем для каждой модкли писать логику, если можно в одном месте написать и переиспользовать?
Я этого не утверждал. У нас в проекте есть const Modal = ({onClose, children}) => { ... }, на основе которой делаются остальные модалки.
Bogdan
Я этого не утверждал. У нас в проекте есть const Modal = ({onClose, children}) => { ... }, на основе которой делаются остальные модалки.
вот я ссылку кинул, там просто ф-я, которая принимает что угодно, мне очень понравилось так
Андрей
И просто внутрь компонент с содержимым бросаете?
Да, ну и там есть всякие пропы, которые управляют закрытием по esc и прочие мелочи.
Yury
Да, ну и там есть всякие пропы, которые управляют закрытием по esc и прочие мелочи.
А если из модалки данные вверх передать в компонент, который ее вызвал?
Yury
Не понимаю вопроса.
Например создание пользователя дизайнер сделал в модальном окне (имя фамилия) инпуты. Заполнил, нажимаю сохранить
Bogdan
Например создание пользователя дизайнер сделал в модальном окне (имя фамилия) инпуты. Заполнил, нажимаю сохранить
какая разница, что чел делает, вообще компоненту, который ты поднял не важно, что подымать
Bogdan
<Modal opened={opened}> <Form onSave={callback} /> <Modal />
а если я хочу 3 модалки поднять сразу на главной странице к примеру
Bogdan
Не вижу проблемы. Поднимай.
как это выглядит, в твоем примеру
Андрей
как это выглядит, в твоем примеру
Рендеришь модалки в нужном порядке. Или даже друг в друге. Что позже маунтится, то будет выше.
Андрей
Kurzdor
Я этого не утверждал. У нас в проекте есть const Modal = ({onClose, children}) => { ... }, на основе которой делаются остальные модалки.
У меня на проекте есть где то сверху в контексте рядом с аппом примерный тогглМодал, а его вэлью в Modals, где в зависимости от значения того вэлью маунт происходит нужной модалы
Bogdan
Да, так же как и в других ситуациях.
не лучше массив компонентов в еффект передать к примеру?
Bogdan
Не вижу никаких преимуществ.
showModal([Modal1, Modal2, Modal3]) - , хз, видимо тут их нет
Андрей
showModal([Modal1, Modal2, Modal3]) - , хз, видимо тут их нет
Часто ли тебе нужно просто отобжарать модалку, не прокидывая в неё ничего снаружи? Примерно в нуле случаев.
Kurzdor
Андрей
ну камо, ты что, в самой Modal1 прокинь все
Не понимаю, что прокинуть и как?
Bogdan
showModal([() => <Modal1 />, () => <Modal1 />..])
Bogdan
Не понимаю, что прокинуть и как?
ели так больше нравится
Андрей
Я против такой неявности. Я предпочитаю, чтобы всегда было понятно какой компонент порождает модалку.
Андрей
showModal([() => <Modal1 />, () => <Modal1 />..])
Создавать на каждый рендер новую функцию?
Kurzdor
Вообще Modal1 не то
Андрей
вызови в салбеке
Тебе не кажется, что ты черезчур сложное решение проблемы придумал?
Bogdan
Тебе не кажется, что ты черезчур сложное решение проблемы придумал?
хорошее , понятное, лаконичное, это лучше чем городить кучу компонентом, это просто как палка
Bogdan
короче, я хз, если то, что на скрине вам удобно, не буду переубеждать, пользы мне от этого не будет
Yury
большой какой-то получается. Может по типу хотябы обьединить и текста кидать уже через пропсы?
Андрей
короче, я хз, если то, что на скрине вам удобно, не буду переубеждать, пользы мне от этого не будет
На скрине не удобно. Но и прокидывание компонентов в функции так же такое себе.
Bogdan
большой какой-то получается. Может по типу хотябы обьединить и текста кидать уже через пропсы?
это не просто большой, это очко, я не понимаю, ну очевидно ведь, что потом это не поддержать никак, 20 модалок 200 строк
Андрей
почему? это довольнно не плохо
И у тебя ещё контекст всерху висит, который отслеживает вызов этой функции, да?
Bogdan
И у тебя ещё контекст всерху висит, который отслеживает вызов этой функции, да?
зачем его отслеживать? что за сложность? если в стеке есть компонент, он отобразится, нету, не отобразится, что за сложности, да ты туда вместо модалки можешь передать что угодно
Bogdan
И у тебя ещё контекст всерху висит, который отслеживает вызов этой функции, да?
как ты без контекста закроешь модалку например при выполнении запроса? прокинешь колбек, а с контекстом не нужно
Андрей
как ты без контекста закроешь модалку например при выполнении запроса? прокинешь колбек, а с контекстом не нужно
Ладно, остановлюсь на том, что у тебя переусложненное какое-то решение, в отличии от простого рендера с порталом.
Bogdan
По id
ты понял что сказал? тебе закрыть нужно, прокинув ф-ю закрытия туда, где твой запрос
Bogdan
короче, я предложил варик, мне понравилось, можете попробовать, можете не пробовать, я же не заставляю)
Андрей
Это куда сложнее, чем просто ReactDom.render(..., document.body) :D
Bogdan
Это куда сложнее, чем просто ReactDom.render(..., document.body) :D
много проблем решило в работе, тем более , что в каждом проекте модалки посути одинаковы
Kurzdor
Народ, залечу в ваш тред про модалки, у меня есть от апи clientid, client_secret. Его нужно отправлять в виде зашифрованных в бейз64 строк через :. Дык вот, где их хранить лучше? .env? const где то в helpers/constants.js?
Bogdan
Моя строчка не решает твои проблемы?)
не, с контекстом проще, ничего не прокидываешь, не нужно следить за активными никак, просто рисуешь, что есть в массиве и все
Nikolai
ты понял что сказал? тебе закрыть нужно, прокинув ф-ю закрытия туда, где твой запрос
Прокидываешь id в экшен, а по выполнению запроса диспатчится другой на закрытие модалки с нужным айди. Ты так говоришь, будто твой - единственный вариант.
Kurzdor
последний варик видел юзают люди
Видя вашттреж про модалки, хочется услышать и других людей :)
Bogdan
Только вот одна проблема. Мне не нужно прокидывать ничего)
что бы закрыть, нужно, как ты закроешь из другого компонента?
Kurzdor
Только вот одна проблема. Мне не нужно прокидывать ничего)
А как у иебя в проекте устроены модалки? У меня еще в Модал.жс есть useEffect с body-scroll-lock-ом