Dmitry
1) Редьюсеры, экшны, типы и тд разделять по разным папкам - невозможно поддерживать, вот нормальное решение reducers/ test/ index.js reducer.js actions.js types.js selectors.js 2) 100 компонентов в одной папке, серьезно?
А есть смысл выносить? Я понимаю если есть фича И внутри будет ну до десятка санков. И один редбюсер. Долбить вообще нету смысла. Но фича может быть большой. И тут екшены можно ещё по сущностям разнести. Как и стор. Тоже самое только actions и store будут папками
Dmitry
Зачем actions в отдельной папке?
Перечитай Модули В папке файлы разделённые по сущностям фичи Чат к примеру (простой) Акшенов тьма может быть Отправить сообщение При конектится Апи для получения комнат и тд Это разные сущности одной фичи Мне тогда зашёл такой вариант
Dmitry
Dmitry
Константы это не типы для ридакса
Китикет
features/ Files/ components/ reducers/ Files.js FilesView.js index.js Stats/ components/ reducers/ Stats.js StatsView.js index.js common/ hooks/ templates/ store/ - стор + общие редьюсеры reducers/ some-global-reducer/ store.js Provider.js index.js router/ history.js Router.js Routes.js PrivateRoute.js index.js constants/ ui/ - базовые ui компоненты (+ общие templates) lib/ (или helpers) - всякие реюзабельные вспомогательные штуки + разные api
Китикет
+ у фич/компонентов тоже могут быть свои хелперы, у редьюсеров в папке тоже, если сильно нужно
Stanislav
Вообщем, действительно советов или лучших решений в этом нет, так что как удобно, так лучше и делать)
Azamat
Всем привет, кто нибудь сталкивался с аналогами https://umijs.org/? цель - написать платформу для статической сборки клиентских модулей с подтягиванием зависимостей из npm и их последующей сборкой , грубо говоря есть шаблон лейаута, в который я могу загрузить тот или иной модуль/плагин. На выходе получу инструмент для сборки модулей в приложение под конкретного клинета
Artem
Ребят, какой метод в redux saga может сделать следующее, вызвать мой экшен, *GET_FILMS* и вторым параметром передать в этот экшен некоторый action.payload Тт.е. так ("GET_FILMS", API.getFilms)
Roman
есть ли смысл писать только "некоторые" куски кода на TS, исключительно для подсказок в IDE?) сознательно не пишу в чат по ТС, там скажут чтоб просто весь проект переписал)
Roman
Я считаю что нет, но кто то тебе скажет что есть. Так что не знаю как тебе это поможет)
не ну если еще аргументировать точку зрения, то поможет например ты считаешь, что нет, потому что будет сложно настроить транспиляцию/линтер/ещечтото а кто-то скажет, та не, не сложно, у меня в проекте так же)
Roman
Частичная типизация никак не помогает, только приводит к лишним ошибкам из за не строгих типов
так я и не ищу от нее помощи для отлавливания ошибок при билде - хочу просто сгенерировать файлы типов, которые подхватятся редактором и помогут мне при передаче аргументов
Roman
Тогда придется поддерживать типы и код отдельно, это же неудобно
нуу... можно какую-то автогенерилку сделать по сохранению. ну короч я уже вижу, головняка будет больше, чем я думал. спасибо
Roman
Можешь jsdoc юзать для подсказок) Но колбеки и тд там гемор обозначать
тож вариант, но с ТС у меня еще скрытая цель попробовать его самому и потом может продать переход на ТС в команде))
Fa
😂 catch.status(404)
Dwight🫀
Ребята нужна помощь
Dwight🫀
Кто работал з юнит тестами?
artalar
Можешь компонент в React.memo() обернуть
Это вообще никак не поможет
Dwight🫀
🥴😑
artalar
Ребят, подскажите, тут всё ок с этим кодом?
Лучше не создавать функции на каждый рендер
Maxim
Это вообще никак не поможет
не это чисто что бы он не рендерился когда родитель рендериться
Avin
Лучше не создавать функции на каждый рендер
ага, там чуть ниже разрулили ситуацию)
🦁
как словить апдейт страницы средствами браузера? (f5 или тупо кнопкой)
artalar
не это чисто что бы он не рендерился когда родитель рендериться
Хорошая практика использовать memo в файле родителя - т.к. ему известнее сколько будет или не будет рендерится компонент. Если об этом знает сам компонент - это попахивает
Ivan
как словить апдейт страницы средствами браузера? (f5 или тупо кнопкой)
onbeforeunload, но ты не сможешь отличить переход на другой сайт или закрытие вкладки от перезагрузки
Китикет
Есть тут кто-нибудь, у кого eslint нормально автоматом закрывает пустые jsx теги? Какое правило ставите? Или в prettier что-нибудь
Sun
Здравствуйте. Подскажите, а зачем в state указывают loading: false и потом переводят в true? Какую цель в себе несут данные манипуляции?
Maxim
Хорошая практика использовать memo в файле родителя - т.к. ему известнее сколько будет или не будет рендерится компонент. Если об этом знает сам компонент - это попахивает
не совсем понимаю смысла, в текущем компоненте нету пропсов, тоесть его бесмысленно рендерить, а если его родитель будет обернут в memo и будет рендер то компонент всеравно перерендериться хотя ему это не нужно
Китикет
Здравствуйте. Подскажите, а зачем в state указывают loading: false и потом переводят в true? Какую цель в себе несут данные манипуляции?
Только ни в коем случае не loading, а isLoading А нужно это чтобы отобразить процесс загрузки пока данные еще не пришли
🦁
onbeforeunload
спасибо!
🦁
onbeforeunload, но ты не сможешь отличить переход на другой сайт или закрытие вкладки от перезагрузки
мне просто перед апдейтом надо скрольнуть на нулевые коорды, ибо анимация ломается. Так что это не суть
Sun
Только ни в коем случае не loading, а isLoading А нужно это чтобы отобразить процесс загрузки пока данные еще не пришли
встречаю loading часто. в смысле нужно, чтобы какой-нибудь preloader выкинуть, или див с надписью?
🦁
так мне beforeunload помог. А есть способ сделать это через что-то другое?
🦁
я тупо window.scrollTo и всё
Sun
Так ты же видишь в коде зачем он используется?
вижу, но если бы видел, что тольк для прелоадеров, то не спрашивал. а иногда вижу, что вроде ставят для запроса на сервер и больше нигде не используют)
Китикет
вижу, но если бы видел, что тольк для прелоадеров, то не спрашивал. а иногда вижу, что вроде ставят для запроса на сервер и больше нигде не используют)
Это самая базовая инфа для отслеживания статуса получения данных, проще ее сразу добавить чем потом дописывать Ни разу еще кстати не видел чтобы статус загрузки не использовался нигде, это получается и загружаемые данные нигде не рендерятся и не юзаются?)
Kurzdor
так мне beforeunload помог. А есть способ сделать это через что-то другое?
https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md
🦁
ну я грубо говоря так и сделал. Просто зачем париться, если есть евент для таких дел, мне так проще - этож не плохой тон? Но спасибо!
🦁
окей, сделаю через реакт роутер. А по какой причине это плохой тон?
🦁
Этож нетив жс, мне кажется, это хуже точно не сделает
Alexey
не декларативно (с)
🦁
ну в конечном итоге же реакт компилится в такой код...
Kurzdor
Alexey
а еще девчонкам больше нравится forEach, чем for
🦁
я не помню когда forEach последний раз юзал)
Китикет
Я первым делом когда проект получаю, захожу в поиск вскодовский и все forEach удаляю в приложении, а время затраченное на это умножаю в 7 раз, потому что именно столько букв в слове forEach
🦁
каждая итерация функцию вызывает, for быстрее
Китикет
что уже с forEach не так?)
Да везде пихают без причины
Maxim
Да везде пихают без причины
я for использую когда нужна производительность только
Андрей
что уже с forEach не так?)
Люди не понимают когда его есть смысл использовать.
Андрей
+ forEach выглядит хуже чем for-of
Maxim
а когда она не нужна?
ну особой разницы на итерацию в 1000 элментов нету
Китикет
Ну ваще фор (который фор оф) не везде быстрее, они обычно примерно одинаковые по скорости, только вот какой смысл юзать форыч когда больше подходит for
🦁
особой нет, но даже минимальной хватит, чтобы юзать for, вместо forEach
Китикет
Вкусовщина
Т.е. для тебя лишнее нагромождение разных скобок засчет вызова функции и передачи колбека ничего не значит?
Китикет
Вкусовщина
И использование метода вместо стандартного токена языка, который как раз для нужной цели подходит?
Андрей
Вкусовщина
Верно. Но в for-of можно не обходить всю коллекцию, а в forEach нет)
Ivan
И использование метода вместо стандартного токена языка, который как раз для нужной цели подходит?
Когда у меня в коде есть arr.forEach, мне достаточно ненапряжно воткнуть перед ним фильтр или мап. С циклом не так просто. Да и объявление констант для каждой итерации, да и вообще как по мне — циклы фу
Китикет
Верно. Но в for-of можно не обходить всю коллекцию, а в forEach нет)
И это тоже) Ну и я на самом деле не против использования форыча, но только когда он на своем месте, то есть в конце чейна