Anonymous
Я знаю только бекенд решения данной задачи. На фронте, не уверен, что это нужно решать
Мне с бэка придет дерево из категорий подкатегорий любой вложенности и товаров, мне нужен компонент типа инпута с поиском
Павел
Мне с бэка придет дерево из категорий подкатегорий любой вложенности и товаров, мне нужен компонент типа инпута с поиском
когда вводишь очередную букву - посылаешь запрос на бек - он тебе возвращает новое дерево с результатом поиска. Это сложная задача. Результатов могут быть миллиарды строк (миллионы, тысячи), на фронте такую задачу, в общем случае, решать нецелесообразно. Но, если у тебя товаров мало и дерево небольшое, то ты можешь преобразовать его в плоскую структуру по одному из известных алгоритмов (гуглится за 1 секунду) и успешно пользоваться любым решением, что я скинул выше для поиска по плоской структуре.
Face
@Razzwan есть пакетик такой ckeditor, нужен он для редактирования верстки с фронта, или новостей в админке, у него есть методы позволяющие сделать загрузку картинок в содержимое, сначало загружая их постом на сервак, а потом подтягивая оттуда в сам редактор, но дока в 4 раза больше чем у реакта, и нормальных примеров нигде нет
Павел
@Facepwnz если что, сори за радикальный ответ.
Face
Да нет как раз таки, тонна звёздочек, и собирается все как конструктор Лего, если нужен базовый функционал редактора, то вообще торт, у меня ее получилось с формиком связать, да ещё и к стору законнектить, но вот когда совсем глубоко лезешь, начинают волосы дыбом вставать
Face
Ну я как бы понимаю, что редактор, очень ситуативная штуковина, поэтому особо и не надеялся)))
Anonymous
Каким способом я могу в другой компонент прокинуть этот проп. Через сторы не подойдет
Face
Выше без стора или доп обертки никак, можешь ещё глянуть react.context
Anonymous
Под доп оберткой что имеешь ввиду
Face
Под доп обёрткой подразумеваю доп родителя через которого прокинешь глубже и туда и туда
Павел
Да нет как раз таки, тонна звёздочек, и собирается все как конструктор Лего, если нужен базовый функционал редактора, то вообще торт, у меня ее получилось с формиком связать, да ещё и к стору законнектить, но вот когда совсем глубоко лезешь, начинают волосы дыбом вставать
похоже, загрузка картинок никак не связана с библиотекой, что ты скинул. Задачу загрузок картинок просто нужно отдельно решить и решить хорошо. Вряд ли проблемы с библиотекой, скорее проблемы с кодом загрузки картинок
Павел
Каким способом я могу в другой компонент прокинуть этот проп. Через сторы не подойдет
кроме сторов - никаким. Любое другое решение будет хуже, потому что будет громоздким, да и в итоге у тебя все равно появится нечто вроде стора (хранилища данных), которые будут доступны в нескольких местах
Anonymous
Под доп обёрткой подразумеваю доп родителя через которого прокинешь глубже и туда и туда
т.е обернуть сам компонент вместе с хедером? ну я такой подход брал когда breadcrumbs выводил...
Anonymous
а withRouter он ведь чисто парсит url? и прокидывает history, match, location я не влезал внурь его особо, через него не получится ?
Павел
@Facepwnz кстати, спасибо за библиотеку - недавно искал подобное решение, но этого не нашел, хотя оно выгляди более достойно
Павел
Каким способом я могу в другой компонент прокинуть этот проп. Через сторы не подойдет
вот этот пример глянь, может поможет https://reacttraining.com/react-router/web/example/route-config - в конфиге можно так же хранить и title
Face
@Razzwan в том то и прикол что там выгрузка картинок через методы редактора делается, и я даже нашел в доках страницу об этом, разобраться просто никак не могу, вот если интересно https://ckeditor.com/docs/ckeditor5/latest/framework/guides/deep-dive/upload-adapter.html
Dmitriy
вот этот пример глянь, может поможет https://reacttraining.com/react-router/web/example/route-config - в конфиге можно так же хранить и title
Проще свой свич с контекстом наваять и его в визроутер запихать , а там внутри реагировать на хистори
Anonymous
Да думаю сейчас буду смотреть в сторону контекста, т.к задача стоит вывести current Route name
Roman
привет ребята! со стейтом компонентов отлично работаю, а как создать родительский стейт или "глобальный" и получить его в child компоненте?
Roman
кроме как через props
Roman
мне нужно передать в компонент, который будет отрисован роутером определнный main компонентом язык как правильно это делать?
Face
А почему не через props, вопрос не понятен
Roman
причем по вашем рекомендациям я не стал в новом проекте использовать классы и пытаюсь танцевать с хуками
Face
между классом и хуком нет разницы, просто синтаксис разный, и для хуков они починили немного методы жизненного цикла
Roman
хотя с классами все было прекрасно и мне все нравилось, однако мне тут же и сказали, чтобы я использовал хуки и не использовал классы пропсы использовать это на каждый компонент дописывать "проброс", не удобно
Face
Ну кинь в стор тогда, или вон тебе выше написали, почитай про Стейт менеджер, ещё можно react.contect юзануть если глубоко проталкивать надо, но это тот же самый мини стор
MVD
Меня на собесе спросили, какие минусы у реакта, и когда его не стоит выбирать. Можете что нибудь подсказать? Или где почитать?
Dmitriy
Есть, банально did catch сайкл
Зануда, одно отличие то
Dmitriy
почему?
А зачем там реакт?
MVD
А зачем там реакт?
а почему нет?
Dmitriy
а почему нет?
Потому что не нужен экскаватор в песочнице копаться
Daniil
Когда тебе нужно лендинг сделать)
Анмаунт?) Чтобы: 1) вызов не зависел от изменения стейта 2) вызовется в момент анмаунта компонента и еще несколько моментов, там был тред недельки две назад насчет этого. Пришли к выводу, что нужен свой хук для анмаунта
Daniil
Конкретно можешь по этим сообщениям искать
Daniil
function useUnmount(f) { const fWrapper = React.useRef(f) if (fWrapper.current != f) { fWrapper.current = f } React.useEffect(() => () => fWrapper.current()) }
Daniil
как на хуках сделать теплый ламповый componentWillUnmount, у которого 1) срабатываение не будет зависеть от изменения стейта 2) вызовется лишь в момент анмаунта компонента 3) ему будут доступны текущее стейты компонента useEffect( () => { return () => {} } , [] ); да, это не зависит от изменений стейта, да вызывается один раз, но в данном случае невозможно получить текущией значения стейта
Daniil
и еще несколько нюансов хуков, из-за которых появились useMemo и useCallback.
Daniil
ручками(
MVD
Потому что не нужен экскаватор в песочнице копаться
лопаткой будешь неделю копать, а экскаватор одним размахом ковша, поэтому спорно
Dmitriy
ручками(
Ну вот рили за год мне только один раз понадобилось так что в целом мне понятно почему не реализовали из коробки
Daniil
Меня на собесе спросили, какие минусы у реакта, и когда его не стоит выбирать. Можете что нибудь подсказать? Или где почитать?
тебе придется костылить поддержу сср или встраивать реакт - компоненты только для тех узлов, где не нужно сео
Daniil
почему костылить? у реакта сср разве нет?
Ну гугл говорит все в ажуре, но месяца два назад тесты показали что не совсем. Из коробки сср у реакта точно нет 🙂 Если ты только "из коробки" не называешь всякие nextjs
Dmitriy
почему костылить? у реакта сср разве нет?
Короче там где нужно сео и там где нет много динамики на клиенте реакт будет лишним
MVD
Короче там где нужно сео и там где нет много динамики на клиенте реакт будет лишним
большинство приложение: получил данные от сервера -> отрисовал. И все берут реакт. Почему нет? В чем конкретно будет проблема?
Daniil
Твой пойнт, если ssr, то надо брать не реакт?
Мой поинт инструмент - инструменту рознь. Лендос можно конечно на реакте, но лендосы тоже разные бывают. Тут я не подскажу, лендосы на реакте не пилил. В проде у нас есть один проект с кастом сср и реактом точно, потому что на нем был я некоторое время (около года).
MVD
Хотел бы я посмотреть на лендос которому реально нужен реакт)
А ты можешь объяснить, если я напишу лендос на реакте, с чем могу столкнуться неприятным? Пока все аргументы воздух
Daniil
Ну банально засрешь сайзом реакта бандл 🙂
MVD
Ну банально засрешь сайзом реакта бандл 🙂
сейчас у всех быстрый 4g и последние айфоны
Dmitriy
А ты можешь объяснить, если я напишу лендос на реакте, с чем могу столкнуться неприятным? Пока все аргументы воздух
Ты столкнется с тем что без реакта будет столько по времени или меньше , на 100 + к лобайт меньше, нет проблем с вычислениями на клиенте
Daniil
отнють)
Daniil
парсинг все равно на мобилах хуже чем на твоем пк и тут уже не дело в тырнете будет только
MVD
Люди на лендинги берут jquery, который весит не меньше и кучу плагинов к нему. И сайт прекрасно раьботают
Alexander
Народ, кто-нибудь знает хороший курс для новичков на русском по react native?
Daniil
Люди на лендинги берут jquery, который весит не меньше и кучу плагинов к нему. И сайт прекрасно раьботают
Пусть берут, я видел вообще лендосы где весь цсс был вынесен в критикал цсс. Каждый лепит как ему угодно
MVD
парсинг все равно на мобилах хуже чем на твоем пк и тут уже не дело в тырнете будет только
А чем в таком случае тогда лендинг отличается от обычного сайта?) То есть обычнй сайт можно долго парсить, а лендинг нет) странное разделение
Daniil
А чем в таком случае тогда лендинг отличается от обычного сайта?) То есть обычнй сайт можно долго парсить, а лендинг нет) странное разделение
Ну смотри, твой лендос будет в любом случае меньше по размеру бандлов чем нормальный сайт. У нас общий размер всех скриптов/стилей/шрифтов/бога около 6мб. Это все еще приходится оптимизировать, банально - кодсплитинг, развешивание preload/prefetch и прочая лабуда. Так что сравнивать парсинг лендоса и обычного сайта не стоит
Dmitriy
Я не могу представить чем вообще на ленде может реакт заниматься) pug ом подрабатывать что-ли ))
Ula
Из-за чего это происходит? Это нормально?
Andrey
Daniil
Я не могу представить чем вообще на ленде может реакт заниматься) pug ом подрабатывать что-ли ))
Ну в большинстве лендосов он реально скорее всего будет как jsx - шаблонизатором (простите), ну и обычно подрабатывать с слайдером и формочкой отправкой заявки
Andrey
хочешь, чтобы он вызывался 1 раз - сделай useEffect(() => {}, [])
Dmitriy
Из-за чего это происходит? Это нормально?
Почитай про зависимости для юзе эффект .второй аргумент
Daniil
уж если так хочешь реакт тянуть, то стоит его собрата по несчастью - preact
Andrey
Короче, лендос - это слайдеры, формочки, анимация. На реакте всего этого добра много, но чтобы его впиндюрить в лендос, надо потратить больше времени, чем чтобы впиндюрить тоже самое на jquery.