Andrey
притча о том, как хитрые разрабы редакс на useReducer и контексте писали
Danila
Я про самый тупой варик, useReducer/useContext без абстракций дальнейших.
Andrey
Я про самый тупой варик, useReducer/useContext без абстракций дальнейших.
это неюзабельно, я даже ккейса не могу придумать, где бы это работало в угоду стейт менеджеру
Andrey
Когда части приложения не связаны
когда части приложения не связаны предпочтительнее юзать useReducer + useContext, вместо стейт менеджера?
Dmitry
когда части приложения не связаны предпочтительнее юзать useReducer + useContext, вместо стейт менеджера?
С ридаксом ты все связываешь. Кто тебе сказал что контекст плохо и не юзабельно?
Andrey
С ридаксом ты все связываешь. Кто тебе сказал что контекст плохо и не юзабельно?
а можно перестать коверкать мои фразы? контекст не плохо, но нужен он совсем для других целей это можно считать служебной фичей реакта, чтоб пробрасывать данные/апи без водопадов
Alexander
Здравствуйте. У меня на сайте есть обычный html5 плеер, в качестве стрима берётся файл на сервере. Везде воспроизводится нормально, а на ios не запускается. Так же я пробовал использовать один чисто реактовый плеер, и готовые плееры с playerjs.com В чём проблема воспроизведения на ios? Об этом нужно что-то знать? Как заставить дефолтный html5 плеер воспроизводить видео для ios? Это какая-то проблема с policy в айфонах?
Andrey
С ридаксом ты все связываешь. Кто тебе сказал что контекст плохо и не юзабельно?
ничто не мешает тебе юзать разные области стора, считай они будут независимы
Dmitry
Ни то, ни другое
Лол. Реакт учи. И сделай демку и ключи меняй
Dmitry
https://gist.github.com/XaveScor/99431c573b53b8a0c41fb3b5fec522bc
Вообще не понятно что хотели донести. У нас все модули не зависимы и стейт в контексте. Нету проблем кроме пирамиды
Danila
Dmitry
ничто не мешает тебе юзать разные области стора, считай они будут независимы
Ну вообще да. Даже ридакс можно разбить. Но тут ты не получишь стейт из другого контекста
Dmitry
ага, и ререндер всего дерева на любой апдейт провайдера всего то 🤷🏻‍♂️
Кто тебе сказал? Ты не знаешь как работает контекст?
Андрей
Но вообще да. Статейку надо переписать мне.
Dmitry
Ты точно прочитал всю ветку?
Я уточнил что при смене ключа будет не то поведение как написал автор сообщения
Dmitry
Ну, у тебя все стейты уйдёт в корни модулей. Суть не меняется.
Так в чем проблема? Для вас это плохая производительность? Не умение разбить на модули? Или большая пирамида из контекста?
Danila
Я уточнил что при смене ключа будет не то поведение как написал автор сообщения
Я знаю, зачем нужен кей и пару раз напарывался на его тонкости, конечно же. Речь шла о том, что нельзя просто мутировать значение key рутового компонента "извне" и ожидать, что будут происходить ренедеры
Андрей
Так в чем проблема? Для вас это плохая производительность? Не умение разбить на модули? Или большая пирамида из контекста?
Проблема в том, что ты создаёшь свой стейт менеджер, который на 99.(9)% будет хуже, чем существующие решения на рынке.
Danila
Иначе зачем нам setState вообще, сидели бы как в vue реактивничали
Андрей
Нет. Это реакта решение. Не моё
Реакт даёт тебе инструмент. Далее человек им распоряжается или нормально, или строит костыли.
Dmitry
Иначе зачем нам setState вообще, сидели бы как в vue реактивничали
Не понятно про кей и сетстейт. Изменишь кей у апп и все вниз размаунтится и пересоздастся
Dmitry
Реакт даёт тебе инструмент. Далее человек им распоряжается или нормально, или строит костыли.
Когда контекст к костылю приравняли? Если нормально делать и выглядит нормально и работает. Для меня минус то что все привязано к реакт и из вне не заюзать. Нужно помнить порядок контекстов
Danila
Проблема в том, что ты создаёшь свой стейт менеджер, который на 99.(9)% будет хуже, чем существующие решения на рынке.
Да не, просто объект и пара экшенов, вынесеный на верх дерева, написали и разошлись без обязательств. Если проектик маленький, то странно подключать редакс и плясать реверансы перед ним ради того, чтобы пошарить три с половиной объекта между десятью компонентами. Другой вопрос, что в жизни таких проектов, наверное, не очень много, но это не делает сам кейс каким-то ущербным по определению. Почему не попробовать и не прочуствовать, если чувак задаёт такие вопросы - он явно не на галере сейчас сидит и не стек для боевого сервиса выбирает на пять лет вперёд
Danila
Не понятно про кей и сетстейт. Изменишь кей у апп и все вниз размаунтится и пересоздастся
let key = 11; render(<App key={key}/>, target) setInterval( ()=> key++, 1000) Будет размаунчивать и маунтить?
Dmitry
Этот нет. Потому что не тригернуи
Danila
Этот нет. Потому что не тригернуи
Я потому и спросил - прочитал ли ты ветку
Андрей
Когда контекст к костылю приравняли? Если нормально делать и выглядит нормально и работает. Для меня минус то что все привязано к реакт и из вне не заюзать. Нужно помнить порядок контекстов
К примеру, когда подобный issue появился https://github.com/facebook/react/issues/13739. Контекст хорош для прокидывания статики, но никак не динамики.
Mishka
Всем день Что посоветуете для форм в реакте? formik ?
Андрей
Danila
К примеру, когда подобный issue появился https://github.com/facebook/react/issues/13739. Контекст хорош для прокидывания статики, но никак не динамики.
Спасибо. Хотя, в общем-то, предлагают, что It looks like context updates would be sufficient for most* use cases. Although it is a significant slowdown from an event emitter model.
Андрей
Но да. На выходных перепишу текст с указанием всех тестов на тормоза контекста по сравнению с эвент-эмиттером и остальными минусами решения.
Andrey
Кто тебе сказал? Ты не знаешь как работает контекст?
наверное ты не знаешь при апдейте провайдера, оповестятся все подписчики, неважно, релевантен бы им был апдейт, или нет соот-но будет вызван их ререндер, вместе с ререндером их дочерних веток
Adv0cat
Простите, что замутил такой холивар своим тупым вопросом 😂 Мне правда просто интересно было, почему для простейшего Spa с 2-3 страничками сайта нахерачил целый редакс, если там можно было обойтись тупо объектиком с парой изменяемых параметров. 😊
Andrey
В ридаксе так же
емнип даже в mstp из коробки мемоизируется
Andrey
Если они консюмеры контекста и контекст изменился - значит, и надо было вызвать их перерендер, не?
ну о том и разговор в см механизм мемоизации в большинстве случаев из коробки
Andrey
при том, что даже нет поинта о том, где бы это было полезно (потому что его и нет) (особенно с приходом эффектора в наш мир)
Danila
при том, что даже нет поинта о том, где бы это было полезно (потому что его и нет) (особенно с приходом эффектора в наш мир)
Нельзя доказать отсутствие необходимости в СМ, сначала нужно доказать необходимость СМ. Если где-то можно обойтись контекстом и всё ок - то зачем тащить СМ?
Danila
вы про еффорт написали, а что он такого грандиозного изменил, подскажите 😊
Эффектор изменил то, как мы смотрим на мир, мы стали более лучше вызывать события
Andrey
Нельзя доказать отсутствие необходимости в СМ, сначала нужно доказать необходимость СМ. Если где-то можно обойтись контекстом и всё ок - то зачем тащить СМ?
так ситуацию можно к ассемблеру свести, зачем лишние абстракции тут это неприменимый подход проблема примерно в том же, как если бы человек для простого приложения сам бы сел писать реакт
Dmitry
аа, ну это конечно меняет ситуацию (нет)
Напиши тесты и докажи не нужность контекста. А пока это такое
Daniil
Шо опять про эфекторы
Adv0cat
Шо опять про эфекторы
а что с ними не так?)
Andrey
Напиши тесты и докажи не нужность контекста. А пока это такое
напиши тесты и докажи нужность решения useReducer + useContext. А пока это такое (не я форсю это говно, так что, сами разгребайте)
Adv0cat
целый редакс - это около ста строк кода
это библиотеки 100 строк кода, а скоко бойлерплейта он привносит в проект ради пары событий))
Andrey
вы про еффорт написали, а что он такого грандиозного изменил, подскажите 😊
эффектор только) меньше бойлерплейта, удобнее апи, легче на старте его понять, хороший DX
Danila
так ситуацию можно к ассемблеру свести, зачем лишние абстракции тут это неприменимый подход проблема примерно в том же, как если бы человек для простого приложения сам бы сел писать реакт
Применимый, потому что если у меня встала задача из данных дом строить и эффективно его обновлять - я пошёл и взял реакт, он решает этот вопрос. Если есть задача пошарить стейт - я взял и пошарил стандартным механизмом. До тех пор, пока для конкретного случая этого достаточно - все дополнительные обвесы не нужны, а ты почему-то исходишь из концепции, в которой редакс - это такое что-то необходимое обязательно и по умолчанию. Странно.
Andrey
круто! а что такое dx?)
Developer eXpirience (удобство дял разработчика в общем, типы, автокомплиты, fluent api, ...)
Aidyno
ребзя, а что скакжете на счет этого ресурса? https://www.sitepoint.com/
Andrey
Ааа, странно что не DE 😁
ну в транскрипции начала слов одинаковые же) икспириенс ди икс ю икс
🎉
Должно если в апи есть swagger.io
Adv0cat
@alpatovdanila @tehSLy Пасиба вам огромное за объяснения, узнал много нового 😊
Andrey
эх, хоть немного добра в етих холиварах...
Андрей
Применимый, потому что если у меня встала задача из данных дом строить и эффективно его обновлять - я пошёл и взял реакт, он решает этот вопрос. Если есть задача пошарить стейт - я взял и пошарил стандартным механизмом. До тех пор, пока для конкретного случая этого достаточно - все дополнительные обвесы не нужны, а ты почему-то исходишь из концепции, в которой редакс - это такое что-то необходимое обязательно и по умолчанию. Странно.
У тебя есть фундаментальная ошибка в рассуждениях: ты считаешь, что все механизмы реакта несут добро. Это не так. К примеру, внутренних стейт. Это самое главное зло в реакте. Из-за чего компоненты начинают жить своей неотслеживаемой жизнью, что усложняет переиспользуемость и тестирование.
Sm•ok
Кстати. Плюсы редакса (тут за все стейт менеджеры), это отладка. Очень круто видеть экшн и его действия повлекшие изменения
Vlad
господа. подскажите. в бразуере ошибки выводятся без конкретной информации в каком компоненте она произошла. кручу верчу вп, что-то ничего не получается. FriendlyErrorsWebpackPlugin, SourceMapDevToolPlugin пробовал