Ivansky
Ну вот
Это говорит о том, что ты можешь так сделать, а не о том что это нормальная практика. didMount, didUpdate - в основном для сайд-эффектов, а не для обновления состояния
Ivansky
Короче) Переезжате на хуки уже https://overreacted.io/how-are-function-components-different-from-classes/
Андрей
Как это “будет лучше”? ie11 не будет
Я думал вебпак перефразирует под IE 11
artalar
Я думал вебпак перефразирует под IE 11
Вебпак - это сборщик, он код не меняет, только склеивает
artalar
Бабель мб может
artalar
Помню говорили год назад что новый бабель сможет какие-то полифилы автоматом подставлять. Как сейчас с этим - не знаю. В любом случае надежнее всего полифилы самому добавить
Ivansky
preset-env и browserlist
Ivansky
Не надо ничего руками составлять, уже давно 7+ версия на дворе
artalar
Прям норм автоматом подставляет?
artalar
Просто если видет .includes?
Ivansky
Я вебпаку тоже не доверяю, начать что-ли файлы руками склеивать
Daniil
Под ие
artalar
Я вебпаку тоже не доверяю, начать что-ли файлы руками склеивать
Это разное, для корректной подстановки нужен семантический анализ серьёзный
Daniil
Но вроде с какой - то версии и пресет енв не нужен
Daniil
Но это не точно
artalar
Т.е. такое, конечно, не прокатит list[‘i’ + ‘cludes’](…)
Daniil
Извращение
Daniil
🤔
Ivansky
@artalar babel-preset-env использует kangax/compat-table и browserslist Это дает ему понимание, что и кто не поддерживает Вот https://github.com/babel/babel/blob/master/packages/babel-preset-env/package.json#L78
artalar
Почему ты так уверен?)
Потому что это ЖС String.prototype.toString = () => throw
Ivansky
Не буду спорить, так глубоко не заглядывал, не могу сказать как он AST дерево строит
Daniil
Тут уже надо смотреть по примерам, но в моих кейсах для ие11 он норм с инклюдс работал
artalar
Я верю что бабель может это все автоматом, я лишь подчеркиваю что это не абсолютно надежно
Daniil
Возвращаемся в 2007 и пишем надежно ?)
Daniil
Эх, а было прикольно на нем клепать сайты
Ivansky
Только не Ucoz 😰
Они до сих пор существуют, неожиданно
Daniil
Вроде же переименовались?
Nikola
Еще возможно очень нубский вопрос, но как лучше реализовать? Нужно сделать так, чтобы при открытии одного календаря, закрывался другой. Использую редакс
Daniil
Еще возможно очень нубский вопрос, но как лучше реализовать? Нужно сделать так, чтобы при открытии одного календаря, закрывался другой. Использую редакс
дописать метод click ouside, закинуть туда реф или event и проверять. Если два то мб просто ввести два булевых значения и тоглить их
Андрей
это же не задача вебпака
Там ниже я исправился
Dmitriy
Привет всем. Задеплоился на хероку и апликуха почему-то пытается тянуть Еслинт... Там ж продакшн окружение и Еслинт не должно трогать вообще
rovnyart
ребят, подскажите плз, можно ли каким-нибудь грязным хаком сделать document.body.appendChild в самый верхний див, не зная его id?
rovnyart
всмысле создать див, который будет ребенком самого верхнего div-а в body
rovnyart
подскажите плз, как)
Arti 🦠
Если самым грязным хаком то можно
Arti 🦠
Тебе нужно обратиться к боду, взять его детей и обратиться к первому ребенку
Arti 🦠
Обычная работа с дом узлами. Но есть проблема
Arti 🦠
Дом узлы генерируются не сразу ...
Arti 🦠
А тебе зачем вообще это ?
Arti 🦠
Может ты что то не то пытаешься сделать
rovnyart
я пишу некий компонент, который бы показывал уведомления, и мне обязательно нужно уметь "вызывать" эти уведомления из любого места реакт-приложения, то есть н только внутри компонентов, но и внутри всяких там внешних конфигов, вообще внутри любых файлов, для этого я написал функцию, которая принимает сообщение и создает новый див, в котором рисует уведомление при помощи библиотеки, но создаю я этот див как document.body.appendChild(div), а приложение у меня завернуто во всякие там Theme-prodivder-ы, и мне надо, чтобы этот див с уведомлением был внутри дива root, а в общем случае - внутри самого внешнего дива в body
Dmitriy
Такое через порталы вроде делается по-нормальному
rovnyart
Такое через порталы вроде делается по-нормальному
хм, я чет забыл про них, точнее никогда не пользовался createPortal) спасибо, ща попробую
Dmitriy
Звучит так себе(( Так то по треду gdsfp именно по задаче
Скажи зачем может понадобится пихать пропсы в стейт?
artalar
Скажи зачем может понадобится пихать пропсы в стейт?
Когда есть переключение между контролируемым и некотролируемым свойством компонента. Это частая задача библиотечных компонентов. Например: есть форма, в ней своя валидация, которая может показывает ошибки (хранится в стейте). По сабмиту форма уходит в глобальный стейт, дальше асинк запрос которого прилетают ошибки и их нужно показать - передав через пропсы
rovnyart
Засунув див в id=root примонтированный туда компонент провайдерами не обернется. Хуже того, реконсайлер может этот див в некоторых случаях потереть полностью
ну кстати я чет вообще не понимаю, зачем мне нужны такие извращения, не понимаю, почему у меня слетают настройки типографики, если в MuiThemeProvider у меня завернут по сути div id="root", а при показе уведомления у меня создается новый див, соседний с root, куда и рендерится это уведомления. Но факты таковы, что на время показа уведомления у меня слетают шрифты на всей остальной странице, а когда уведомление пропадает - все восстанавливается( Подскажите плз, почему такое может быть?
rovnyart
rovnyart
Ivansky
Ты используешь Portal?
rovnyart
нет просто reactdom.render в соседний див
Ivansky
🙈
rovnyart
с порталом у меня вообще не отображается уведомление)
rovnyart
а, я кажись понял в чем дело, сама библиотека уведомлений использует собственную тему material-ui :(
Bogdan
всем привет, подскажите, вот это как можно переписать нормально?
Bogdan
вот полный скрин
Bogdan
тоесть мне нужно получать статью текущую и пихать ее в формик, но из-за того, что формик после перерендера не берет новый стейт, приходится вот так делать
Bogdan
На класс
я выполняю запрос на получение текущей записи из стейта, изначально то она пустая, но формик ловит как раз первый вариант и после перерендера не подхватывает новый стейт, пришлось сделать проверку, типо если id текущей статьи совпал с id в урле рендерить форму, может в формике есть что, не могу найти
Bogdan
тоесть нужно именно формик перерендерить, не могу найти как это сделать , есть ли вообще у него такой метод
rovnyart
чето у тебя вообще какая-то дичь написана, начать хотя бы с того, что у тебя вторым значением из хука useState возвращается некий getxxx, что как бы немношк не по соглашению, да еще он в useEffect вызывается над каким-то коллбэком, этот код даже если чудом щас работает, через неделю без поллитры никто не разберет
Bogdan
чето у тебя вообще какая-то дичь написана, начать хотя бы с того, что у тебя вторым значением из хука useState возвращается некий getxxx, что как бы немношк не по соглашению, да еще он в useEffect вызывается над каким-то коллбэком, этот код даже если чудом щас работает, через неделю без поллитры никто не разберет
как бы get на set переименую, проблема не уйдет, у меня есть екшен, который достает текущую запись и пихает ее в стор, но изза того что формик чудесный не ловит новое значение, приходится пока так обновлять насильно
Daniil
Зачем внутри гет каррент стрелка вообще
rovnyart
и скорее всего у тебя какая-то ошибка в архитектуре, раз ты так форму рендеришь по условию, форму надо рендерить выше по виртуальному дереву, чтобы initialValues в нее попадали с сервера сразу
Bogdan
не дотер старое, это пробный варик, пока кручу , пытаюсь что то сделать
rovnyart
ну и конечно getcurrentsummary обяхательно переименовать в setcurrentsummary
Bogdan
и скорее всего у тебя какая-то ошибка в архитектуре, раз ты так форму рендеришь по условию, форму надо рендерить выше по виртуальному дереву, чтобы initialValues в нее попадали с сервера сразу
вот есть каталог, каждую часть записи редактирую, кидаю на роут, из него беру id записи и имя шага, переключаю на шаг, беру текущую запись и пихаю в стейт