Looch
Но его юзает другая фича
Frontend Priest
Мусорка для хелперов - немножко грязный хак, не надо так
Looch
Нет
Фича А требует кусок фичи B и фича B требует кусок фичи А
Frontend Priest
Looch
И все
Looch
Даже если через паблик апи
Looch
Досвидос
Frontend Priest
Распишешь мысль?
Frontend Priest
Так какая разница
Паблик апи - гарантия безопасности использования фичи. Циклическая зависимость - не приговор
Looch
Паблик апи - гарантия безопасности использования фичи. Циклическая зависимость - не приговор
Я понимаю что паблик апи это для инкапсуляции и тд, для инициализации фичи А оно берет из паблик апи фичи B какой-то модуль, а что б инициализировать фичу B нужно взять из паблик апи фичи А какой-то модуль и тут твой подход ломается
Looch
Сборка может пройти неправильно и тд
Looch
Да легко
Looch
Дохера такого было на проекте
Китикет
А как она неправильно пойдет собственно, если логика однонаправленно импортируется и в фичу А, и в фичу Б
Looch
Сейчас покажу как решали
Andrey
о, помню как стайлед наебывается из-за цикличных зависимостей
Китикет
Откуда цикл возьмется
MVD
Второй аргумент принимает массив с набором зависимостей
Там по ссылке сравнивается. А мне нужно значения проверять
Looch
https://medium.com/visual-development/how-to-fix-nasty-circular-dependency-issues-once-and-for-all-in-javascript-typescript-a04c987cf0de
Looch
Например static поля
Китикет
Looch
Или декораторы
artalar
Там по ссылке сравнивается. А мне нужно значения проверять
В смысле у вас массив объектов и вам нужно проверять поменялось ли определенное поле в одном из объектов? Либо делать нормально - т.е. использовать нормализацию. Либо в рефе хранить последнее значение и в эффекте вручную сравнение делать
Frontend Priest
Не очередную абстрактную
artalar
Массив строк
В чем проблема тогда?
Looch
Циклическую зависимость фич, пожалуйста
Фича А требует селектор из фичи B а фича B где-то юзает селектор из фичи А. И в reselect на этапе сборки не приходит селектор и собственного говоря все падает 🙇🏻‍♂️
MVD
В чем проблема тогда?
Там массив любой длины может быть?
Looch
Ещё не доходя до рантайма
artalar
А теперь мой любимый вопрос. Назови реальный кейс, в котором происходит именно так.
Встречаются такие кейсы. Лично у меня на каждом втором проекте
Aleksandr 🎄
Для трека изменений нужен аналог immutable.js геморно, но работает отлично )👍
artalar
Там массив любой длины может быть?
И? Если у вас поменялось значение - значит у вас поменялся массив, сравнение по ссылке и нужно. Или вы мутируете массив?
Daniil
использует кто чисто хуки на реакте с контекстом?
Daniil
или рано / поздно придётся погибать
Looch
Конкретную значит без "А" и "Б"
Давай я тебе гист сделаю через пару часиков, сейчас прост очень занят
artalar
использует кто чисто хуки на реакте с контекстом?
Можете считать что все хуки продакшн реди
Frontend Priest
Давай я тебе гист сделаю через пару часиков, сейчас прост очень занят
Достаточно сказать, что за фичи и за что они отвечают
Daniil
еес
MVD
И? Если у вас поменялось значение - значит у вас поменялся массив, сравнение по ссылке и нужно. Или вы мутируете массив?
Иногда ссылка меняется, а значения нет. сложно остелжить когда чисто функицональные компоненты пишшеь
Aleksandr 🎄
Ну если образно сказать ) Immutable.js из мира функционального программирования, где применение каких либо изменений влечёт создание нового экземпляра. Таким образом при сравнении инстансов они не равны, а значит различны
artalar
Иногда ссылка меняется, а значения нет. сложно остелжить когда чисто функицональные компоненты пишшеь
Ну это не проблема компонента, а проблема работы с данными. Компонент не должен об этом ничего знать и проверок каких-то делать.
MⅨ
Как редиректнуть всё вместо того чтобы отображать типа 404 Route is not found в React Router
MⅨ
<Route component={() => <p>No route found</p>} />
Aleksandr 🎄
Ну это не проблема компонента, а проблема работы с данными. Компонент не должен об этом ничего знать и проверок каких-то делать.
Компонент обязан реализовать проверку на то что данные поменялись или нет shouldComponentUpdate, часто бывает так что простого сравнения на инстансы не хватает. Если этого не сделать, то каждый раз будет ререндер, на основе простого сравнения инстансов, что будет не оптимально.
Aleksandr 🎄
Конкретно иммутабл ничего для трекинга не делает. Это вообще теплое и мягкое
Я под тренингом понимаю не обзервинг, а трекинг - понимание что объект изменился )
artalar
Это “понимание” - механизмы других библиотек
artalar
Иммутабл - лишь средство для них
Андрей
Что то не понял, в одном месте прочитал что метод рендер надо держать как можно чище, а тут щас написано что "Большая часть логики приложения должна быть перемещена внутрь метода рендеринга."
Андрей
Андрей
https://webformyself.com/react-js-vazhnye-momenty-razrabotki/
🦜
примеры кода приводят?
Ilia
Ребят,может кто объяснить кусок кода?Для чего он служит?) const merge = require('lodash/merge') const config = { all: { env: process.env.NODE_ENV || 'development', isDev: process.env.NODE_ENV !== 'production', basename: process.env.PUBLIC_PATH, isBrowser: typeof window !== 'undefined', }, test: {}, development: {}, production: {}, } module.exports = merge(config.all, config[config.all.env])
Frontend Priest
artalar
https://webformyself.com/react-js-vazhnye-momenty-razrabotki/
Оф дока есть на русском
Андрей
примеры кода приводят?
Нет, тут в этой статье нет
Андрей
нашел где читать
Хах, а что, почти норм сайт
Frontend Priest
Хах, а что, почти норм сайт
оф доку, статьи с hackernoon
Ilia
Спасибо!)
Vilena
всем салюты!
Vilena
будьте добры, подскажите, пожалуйста, как можно реализовать страницу регистрации/авторизации? node нужен для этого, как понимаю?
Vilena
в реакте я еще новичок, прошу не закидывать камнями:)