Тимофей 🛴
Есть может экзампл хороший?
Да прост открой доку redux-thunk
MⅨ
Открыл оф сайт редакса и почитал Advanced статью
Bohdan
непонятно)
ну то есть у меня в адресной строке постоянно один и тот же урл.
arthur
{ items: [], isLoading: false, isLoaded: false, isFailed: false, error: null }
и зачем нужен isloaded, если он дублирует iloading только с инверсией?
Китикет
и зачем нужен isloaded, если он дублирует iloading только с инверсией?
Не, не дублирует, но я попозже могу написать почему так
Bohdan
Да, можно кидать state через реакт роутер
а как его в Route использовать?
MⅨ
а как его в Route использовать?
Такого не делал, но можно создать прокси компонент который по свитчу возвращает компонент по state
Тимофей 🛴
Этот экзампл выглядит достаточно здорово?
Ну добавить redux-toolkit и fetch инкапсулировать внутри класса Api, и вместо fetch будет api.getSomething().then.....
Китикет
и зачем нужен isloaded, если он дублирует iloading только с инверсией?
Но если вкратце, чтобы он дублировал isLoading, надо isLoading изначально ставить в true, что не корректно. Иначе, пока он в false, нам не известно (из флагов), загружены ли данные или нет
Китикет
В items null хранить
Чтобы если не предусмотреть проверку флагов, на рендеринге падало с ошибкой)
Китикет
Можно было бы isFetсhed , чтобы не путаться
Путаться в чем? Не очень понял
Китикет
Не было проблем
Наверное это одна из главных ошибок новичка, я помню тут часто такие вопросы возникали, чувак ставил null в initialState и не мог понять от чего is not a function (вернее в случае конкретно с null - is not a property)
Without Hands
Филипп
Привет всем, не подскажите, если залил проект на gh-pages и нужно что то изменить в нем, нужно заново перебилдить проект?
Тимофей 🛴
Наскольно этот redux-toolkit хорошо и есть ли в нём большой смысл?
Ты сравни объем кода с ним и без него, еще redux-act можешь посмотреть
Китикет
Ты сам придумал себе проблему, имхо, по-хорошему должно быть null
По-моему ты что-то путаешь, это одно из основных правил вообще, что изначальные данные должны быть соответствующего типа, это в первую очередь касается обьектов и массивов
Филипп
перепушить
Спасибо
Pavel
Утречко, извиняюсь если вклиниваюсь в уже обсуждаемую тему. Подскажите вот с таким вопросом. Условно говоря, у меня есть чекбокс или 18 или еще больше элементов которые меняются, его дефолтное состояние хранится в редакс сторе. Я его ставлю или снимаю и отправляю запрос на бек. Нужно ли мне обновлять стейт ожидая ответ от бека или можно забить на обновление, галочка визуально уже стоит, от бека пришел ответ о том, что все норм, а если юзер обновит страницу, правильное значение придет при ините приложения. Ведь по сути что бы получить правильное значение с бека это лишний запрос в бд и на фронте лишняя нагрузка на перерендер компонентов.
Pavel
Если ошибка бек вернет ответ с куском который нужно будет обновить, тут особо ничего не поделать
Kurzdor
Народ, как лучше называть 1. Action Creator 2. Action 3. Reducer у меня в данный момент такая мысль у меня есть redux-act тогда const refresh = createAction(‘…’) const refreshReducer = createReducer export const doRefresh = () => dispatch => вообщем, хочется reducer убрать вообще как слово, и сделал разделение их как лучше сделать, как вы делаете?
Denis 🇺🇦
В items null хранить
У тебя ошибка будет до завершения фетча, потому что ты уже мапишься по айтемам, а мапиться по нуллу невозможно. Или не?
Boris
Всем Привет!
Boris
ПОдскажите плз, как правильно подключить sass в webpack
Kurzdor
самопис
sass-loader
Boris
загрузил и подключил
Kurzdor
https://github.com/webpack-contrib/sass-loader
Влад
Спасибо
у тебя скорее всего настроки стандарт в package.json поэтому посомтри тут: https://create-react-app.dev/docs/deployment/#github-pages ну и у тебя скорее всего страничка без маршрутизации, и нужно минифицированый html для github... поэтому нужно деплоить в билд и потом пушить
Boris
как-то так, однако в консоле ошибка
Китикет
В items null хранить
Более того, проблема куда более серьезная - если где-либо выполнится селектор по items, до их загрузки, он упадет, если не предусмотреть это внутри него, поэтому куда логичнее изначально иметь там соответствующий тип
Влад
алло, не кра
Я здесь, я там, я всегда…
Китикет
кра топ
Kurzdor
кра топ
за свою цену и то что запустили optional chaining + nullish чота там
Boris
Спасибо за помощь, ща гляну
Китикет
ни разу не было такой проблемы
Ну это не значит что всем стоит так делать) У других, как я уже подмечал, бывают проблемы)
Vadim
просто нужно писать валидный код)
Vadim
Ну это не значит что всем стоит так делать) У других, как я уже подмечал, бывают проблемы)
просто у меня далеко не всегда в стейте один items. Там может быть куча полей
Китикет
ни разу не было такой проблемы
У меня например есть такие места, где в mSTP к компоненту подключены селектор для получения айтемов нормализованных и селектор для состояния загрузки, а проверка загрузки уже внутри перед рендером контента, получается что селектор по айтемам все равно выполняется, и если бы там null, упало бы с ошибкой
Китикет
не рендерить компонент, которому нужны данные когда появились данные - рендеришь
Это добавляет миллиард кода и лишнюю обертку, мне кажется это избытычно, учитывая что до загрузки там пустой массив, проход по которому занимает ничего
Китикет
Vadim
!isLoaded -> не рендерим компонент
Китикет
Если у меня 1 основной компонент, который получает и состояние загрузки, и айтемы - я могу айтемы пропсом передать в какой-нибудь SomethingContent, который уже знает как рендерить, а если делать так, чтобы селектор по айтемам не исполнялся до загрузки - надо SomethingContent подключить к редаксу, соответственно дополнительный mSTP и так далее
Китикет
так это тоже самое, что и проверка на null
Вот в этом кейсе как раз не совсем, по основному предназначению действительно то же самое, а вот косвенно это влияет на выполнение селектора (он получит null из стейта, соответственно map по нему сделать не получится)
Китикет
То есть я как бы согласен с тобой, но мне кажется что проще убрать дополнительный код, не подключать отдельно внутренний компонент к редаксу, и для этого ничего не надо делать, кроме замены null на []
Китикет
И это действительно не очень что селектор вынужден выполняться до загрузки айтемов, это немного неправильно чисто логически, но это не приносит никаких минусов, потому что массив изначально пуст, то есть селектор не тяжелый и это не добавит нагрузки
Китикет
что если нужно вывести сообщение «нет данных»? Получается ты будешь путать пользователя
Кстати на это можно посмотреть с 2 сторон Если с null, то у нас в items могут быть 3 состояния сразу: null - данные не загружены [] - данных нет [...] - данные есть Если без, то 1 явное состояние (данные есть) и 1 состояние, которое делит между собой "данные не загружены" и "данных нет", именно поэтому есть флаг isLoaded, который ситуацию проясняет В этом плане мне использование null нравится, но все же не хочу ради такого делать проверки в mSTP / выносить подключение к стору во внутренний компонент, чтобы до загрузки не выполнялся селектор
Китикет
Тут надо действительно компонент ограничивать, чтобы селектор вообще не выполнялся и не могла выпасть ошибка, но я с таким не часто сталкиваюсь, так что в большинстве случаев меня мой вариант полностью устраивает)
Китикет
Ну здесь бы я так не делал конечно
Но и в таком случае я бы isLoaded оставил для консистентности
Pavel
Ребят вопрос не по теме группы но смежно. Я разработчик, хочу взять аэпл про 13 дюймов. У кого опыт есть, поделитесь? Маленький экран для работы, греется ? Тянет ide?
Sergey
Придется моник подключать
Не всегда (мне не удобно было), больше дело привычки. Около 6 лет за без доп. моника на тренашке, всё ок
Pavel
Лучше во флуд идите
Я хотел именно мнения разработчиков узнать, но как скажут админы, конечно
Тимофей 🛴
Viachaslau
Ребят вопрос не по теме группы но смежно. Я разработчик, хочу взять аэпл про 13 дюймов. У кого опыт есть, поделитесь? Маленький экран для работы, греется ? Тянет ide?
Работал год и без Моника) только положительные эмоции. Хваталовполне, если бы что-то поменял, то добавить оперативы ) надо чтоб 16 было
Natalia
Как уменьшаете бандл: у меня около 5 метров вышел, 2 тайпскрипт, 2,2 антд и 0.5 rechart
Alex
ох, антд - говно. Большая часть антдшного бандла - иконки.
Alex
Вот ишью про эти иконки. Их можно повырезать матерью и паяльником на этапе сборки https://github.com/ant-design/ant-design/issues/12011