Очень интересный доклад, зразу же лайк!И личная просьба выпускай больше видео о React, уж очень качественно
@it-sin9k2 жыл бұрын
Спасибо!
@vlads43322 жыл бұрын
ВОУ!!!!! Вот на такие доклады - ходил и ходил бы!!! Лайк, Спасибо !
@it-sin9k2 жыл бұрын
Спасибо!
@serhiisynianskyi83482 жыл бұрын
Благодарю за доклад, удивил)
@it-sin9k2 жыл бұрын
Надеюсь в хорошем плане удивил)
@wev_dev_pro Жыл бұрын
Спасибо за доклад
@kostyakozlov52892 жыл бұрын
Отличный доклад!
@ДаниилНосов-х6б Жыл бұрын
Спасибо большое! Очень интересно слушать, а самое главное все понятно!
@it-sin9k Жыл бұрын
Спасибо! Я очень старался)
@ChatMayevskogo2 жыл бұрын
лайк твоему братану)
@temoncher2 жыл бұрын
Субъективное непопулярное мнение: сам факт наличия лекций, которые сравнивают Context API (который не предназначен для управления реактивным состоянием) cо state manager'ами только путает людей еще больше. Context API и библиотеки управления состоянием решают две совершенно разные задачи. Context API решает задачу представления доступа к "X", игнорируя глубину вложенности элемента(aka внедрение зависимостей, поскольку мы вместо того, чтобы прокидывать этот "аргумент" явно, берем его из некоего контейнера, который спрятан внутри React). Библиотеки управления состоянием же помогают хранить состояние и реагировать на его изменение. Перекладывая на термины Angular(может кому-то будет понятнее): Context'ы - это InjectionToken'ы, которые помогают внедрять сервисы в конструкторы. Поэтому у Context API и нет конфликта с Redux'ом, react-redux пользуется механизмом внедрения зависимостей react'а, чтобы получить доступ к хранилищу из любой точки приложения, а как ты далее будешь реагировать на изменения этого хранилища - это совершенно другой вопрос. Поэтому ответ на вопрос "Почему из коробки нет `useSelector`'а?" должен быть следующим: Context API не решает задачу хранения реактивных данных, и, соответственно, не решает задачу оптимизации ре-рендеров компонентов тоже. В общем и целом правило "Если ты складываешь результат работы `useState` (или его производные с помощью `useMemo`) как `value` в контекст, то, скорее всего, ты что-то делаешь не так" работает великолепно. Храните реактивное состояние в state manager'ах, а Context API используйте для внедрения зависимостей и будет вам счастье.
@theoty-js2 жыл бұрын
Респект парням, АЙ Синяк разрывной персонаж, очень крутой! Таких больше нет!!! настолько доходчиво объясняет.
@it-sin9k2 жыл бұрын
Спасибо!
@TheTexPro Жыл бұрын
Спасибо большое, очень помогает освежить знания)
@alexandrdermenji24282 жыл бұрын
Крутой доклад ! Спасибо !
@Nuts_Cracker2 жыл бұрын
Спасибо за доклад, очень интересно! Keep doing what you doing!
@ivanvaneck Жыл бұрын
38:38 - правильно ли я понял что здесь точнее будет не undefined а defaultValue которое мы указали в createContext()?
@it-sin9k Жыл бұрын
Отредактировал сообщение) пересмотрел ролик) По идее там будет undefined. Ведь эта часть дерева вообще не покрыта контекстом, поэтому ничего не вернет
@ivanvaneck Жыл бұрын
@@it-sin9k Блин, походу мое сообщение с линком на кодсендбокс удалилось, хотел показать тебе как это работает в коде :( Раз уж тут как-то странно со ссылками, загугли пожалуйста Specifying a fallback default value in React Context, цитата: > If React can’t find any providers of that particular context in the parent tree, the context value returned by useContext() will be equal to the default value that you specified when you created that context Изначальное сообщение не видел так что все норм)
@orucqarayev47592 жыл бұрын
класс!
@vsevolod_zorin2 жыл бұрын
Очень круто! Классно! Теперь я знаю больше! Спасибо!) Попутного тебе ветра, добрый человек) и организаторам спасибо)
@it-sin9k2 жыл бұрын
Спасибо!
@sergei_sergeevu42 жыл бұрын
Спасибо за интересный доклад! Проблему с rerender многие библиотеки решают при помощи Proxy. Не могли бы вы в одном из следующих видео затронуть архитектуру построения и общения mobx store через контекст, так как у них ссылка одинаковая проблем не будет, но раз у вас есть подобный опыт было очень интересно его послушать.
@MrCortc2 жыл бұрын
Вот это подгон, дружище!
@dmitrykorovin43562 жыл бұрын
доклад отличный, спасибо!
@vazgenaleksanyan29292 жыл бұрын
В случае с toolkit-ом не вижу смысла useReducer-а. Создаём ещё один slice и все.
@xD-hu3gw2 жыл бұрын
Как всегда Отлично) ждем примеров про мобыху🙆
@Илья-с1л6э2 жыл бұрын
не нужно решать проблемы context API никакими пакетами. Просто не используете его не по назначению. Context отлично подходит для передачи не изменяемых(или редко изменяемых) даных. Для всего остального он не подходит А кейс когда мы импортировали переменную userActions вместо засыввания их в контекст мы вообще скрестили ежа с ужом. Попробуйте теперь заиметь два провайдера такого "контекста" в дереве и вас ждут интересные открытия. Так же распространное заблудение "redux прокидывается данные через контектс". Это не правда. Редакс(а точнее react-redux) не прокидывает данные через контектс. Он прокидывает стор, не данные. Это принципиальная разница. Стор у нас не изменяемый на протежении всей сессии работы с приложением, в то время как данные - изменыемы. А почему противопставили единый источник истины и мультисторовые решения вообще не понятно. Они никак друг другу не противоречат
@rgaliev04 Жыл бұрын
А если данные часто изменямые (инпут к примеру), то как хранить эти данные глобально если нужен к нему доступ из нескольких других компонентов?
@azad08082 жыл бұрын
Писали писали без redux с контекстом и в итоге получился Redux..
@kostyakozlov52892 жыл бұрын
Держался молодцом!
@it-sin9k2 жыл бұрын
Спасибо!) во второй половине уже чувствовал себя по свободней))
@РоманТищук-е6в2 жыл бұрын
Кайф!
@ilikecola378 Жыл бұрын
Меня интересует насколько удобно работать с файлами 3000+ строк, или разработчики React их конкатенируют перед тем как положить на github?
@it-sin9k Жыл бұрын
думаю, это они так пишут)
@kai.hexenzorn Жыл бұрын
Полезное видео для того, чтобы понять, как отказ от контроллеров, ViewModel и DomainEntity в конечном итоге приводит ко множеству проблем и костылей, когда пытаешься управлять состоянием и рендерингом. По сути использование нескольких контекст-провайдеров или сторов - это использование слабовыраженных сущностей предметной области, которые и должны хранить и состояние, и функционал, и быть цельными и изолированными от окружающего мира. Вместо этого мы наблюдаем расчленёнку, где в сторах оказывается состояние DomainEntity, а функционал DomainEntity где-то разбросан по ui-компонентам или экшенам, делая код запутанным и перегружая ui-слой, куда начинает протекать бизнес-логика. Если и делать кастомное управление состоянием, то не на основе контекста, а на базе mobX. MobX - не идеален, но задаёт правильный вектор.
@it-sin9k Жыл бұрын
согласен) для разбиения данных на разные сущности, я бы тоже либу юзал, а не context)
@CJIu3eHb2 жыл бұрын
Столкнулся также с неким неудобством в typescript, когда надо типизировать контекст при его создании (при установке дефолтного значения). С самими сущностями можно определиться, а вот сеттеры к ним, которые используют сеттеры useState в компоненте провайдера, можно определить только после вызова useState в этом компоненте. И приходится эти сеттеры делать опциональными при описании типа контеста. И потом, при вызове в дереве компонентов либо делать проверку на undefined, либо использовать "!". В принципе, наверное, создание контекста можно затащить в компонент провайдера и заюзать для этого ref, но тогда его нельзя экспортировать, и надо объявлять наверху переменную для него неинициализированную, в общем, выглядит это не очень.
@woodDacha2 жыл бұрын
кратко заменит ли контекст Редакс - НЕТ, где использовать контекст - NPM пакеты без обид но возможно профи уловили тонкости мне лично немного пользы
@vladserhiychuk89252 жыл бұрын
гуд
@maksimmnatsakanov28532 жыл бұрын
Спасибо! А можно ссылку на репозиторий? В описании не нашёл.
@it-sin9k2 жыл бұрын
Неужели я забыл добавить)) github.com/Sin9k/useContextPlusUseReducer
@Spirtikyss2 жыл бұрын
Спасибо за доклад, освежил память по context. Ты сказал, что в последнее время не использовал context, а что насчет steppers ( форма с шагами или подобные карусели ), когда нету целесообразности выносить это в store ( нет разницы, mobx или redux ), но в тоже время нужно шарить данные между шагами? Что ты используешь в той структуре?
@it-sin9k2 жыл бұрын
по разному бывает, что то в роутере храню (там етсь state), что то в sessionStorage. Все по ситуации
@windus082 жыл бұрын
Сначала стоит лайкнуть, потом посмотреть. А то некст ролика ждать дольше придется
@АлександрСкиталец-ц7р Жыл бұрын
Я использую контекст в кастомных филдах для форм.
@vitaliktrebko6436 Жыл бұрын
Я часто разбираю х... имходники реакта. Так точно мою работу ещё н кто не описывал 😂
@rinatvaliullov32472 жыл бұрын
А можно ссылку на презентацию со всеми ссылками уже в ней? )
@it-sin9k2 жыл бұрын
Привет :) Добавил в описание, ссылку прямо из конференции скачать слайды. Если не работает, напиши пожалуйста, еще куда залью)
@alexeysvetlenko22172 жыл бұрын
Приблизительно 3 года без Redux и уже третий проект на Context + GraphQL.
@it-sin9k2 жыл бұрын
Сильно!
@sergeys47322 жыл бұрын
На сколько большой проект ? Какие проблемы всплывали в ходе разработки ?
@it-sin9k2 жыл бұрын
@@sergeys4732 Вот здесь я задавал такие же вопросы. И в докладе использовал эту информацию: github.com/Sin9k/useContextPlusUseReducer/pull/1
@sergeys47322 жыл бұрын
@@it-sin9k данке))
@pluto2656 Жыл бұрын
Такую элементарную вещь мусолить это нужно уметь
@it-sin9k Жыл бұрын
Спасибо!
@olezhonnv32152 жыл бұрын
Я решил придумать костыль! И это весь реакт - такой! Костыль придумали, расхайпились. А потом полезли грабли и новые костыли, что подпереть костыли на костылях. Про редакс вообще молчу! Дичь несусветная. И приходится с этим ГЭ периодически работать.
@olezhonnv32152 жыл бұрын
А если еще приправить все это тайпскриптом, и проект развивается пару лет. Ой, мама! Какой бардак там будет! И это все проекты на реакт такие. Без исключения.
@andTutin2 жыл бұрын
это пройдёт
@jorjodell2 жыл бұрын
Есть варианты?
@Mr.Bellamy Жыл бұрын
Чето синяк совсем не синяк) Где мешкари под глазами, где треники с растянутыми коленками) Я один что ли пью когда кодю 😢
@it-sin9k Жыл бұрын
Так перед выступлением привел себя немного в порядок)) а то неудобно как то)
@liganshow2 жыл бұрын
Зачем вы это сделали? Это был секрет и всех это устраивало…
@alexs79312 жыл бұрын
Контекст Провайдер это тупо scope компонента. Это обеспечивает изоляцию логики-состояния, никто вне скопа, не полезет своими грязными рученками в эти данные.
@serhioramires316610 ай бұрын
Дизлайкнул. Не понравилось. Я начинающий и тут какое-то бурление показали. Не разделяю оптимизма докладчка. Хрень.
@it-sin9k10 ай бұрын
Из всего комментария, понял только, что не понравилось)
@serhioramires316610 ай бұрын
@@it-sin9k ) а что дизлайкнул не поняли?
@it-sin9k10 ай бұрын
к сожалению, нет. Если подробнее ответите, буду благодарен :)