Артем
Ты же функцию в button прокидываешь, вот если бы прокидывал так в компонент, в котором внутри еще 10 компонентов, тогда была бы гора лишних ререндеров, а щас обернуть в useCallback будет даже хуже
Ну спорить не стану, может и так, но с другой стороны, если менять кнопку на что-то иное и что то вырастет из этого, то можно или не париться или дописать потом.
Китикет
Стоит помнить что хуки это не магия, они тоже много операций выполняют, то же сравнение зависимостей Так что в данном случае более оптимизированным может быть создание новой функции в каждом рендере (gc все равно уберет старую практически мгновенно), чем хранение и обслуживание постоянной ссылки
Китикет
Но вообще useCallback с id в зависимостях тут будет элегантно выглядеть)
Китикет
Единственное, что надо тогда в компонент это выносить
Timofei
ага
Stanislav
Попробую ещё раз Если есть форма и данные из неё передаются через Link c onClick вместо input[submit] с onSubmit на форме, это грубый косяк или нет? И вообще косяк ли это?
𝕍iαcheslαv
Добрый день! Други — помогите. Может кто сталкивался — баг с инлайм стилями WebkitTransform В хроме это свойство трансформируется в обычный transform, а свойства с префиксом не добавляется. На другие css свойства префикс Webkit работает
Китикет
Попробую ещё раз Если есть форма и данные из неё передаются через Link c onClick вместо input[submit] с onSubmit на форме, это грубый косяк или нет? И вообще косяк ли это?
Ну если не исключительный случай, лучше кнопка с type submit и обработчик на форме, так как это позволяет использовать некоторые встроенные возможности браузера вроде отправки формы на enter
Avin
Но вообще useCallback с id в зависимостях тут будет элегантно выглядеть)
а как это с id в зависимостях? я кроме такого представить ничего не могу
Андрей
Китикет
а как это с id в зависимостях? я кроме такого представить ничего не могу
Ну если с id в зависимостях, это надо для каждой кнопки колбек делать, но у тебя получше вариант сейчас
Stanislav
Ну если не исключительный случай, лучше кнопка с type submit и обработчик на форме, так как это позволяет использовать некоторые встроенные возможности браузера вроде отправки формы на enter
Спасибо! К слову о нажатии Enter, которое управляет формой. Если нажатие на кнопку контролируется событием onSubmit, работает ли в это случае на форме onKeyup? И если нет, как мне onSubmit ещё и к Enter подвязать?
Stanislav
Китикет
Спасибо! К слову о нажатии Enter, которое управляет формой. Если нажатие на кнопку контролируется событием onSubmit, работает ли в это случае на форме onKeyup? И если нет, как мне onSubmit ещё и к Enter подвязать?
Я точно не помню что именно позволяет форму на enter сабмитить, скорее всего это хедлит форма, когда фокус внутри нее и есть на ней обработчик, можешь проверить просто убрав кнопку
Китикет
В общем, в любом случае корректнее с обработчиком на форме и кнопкой/инпутом submit, со всех точек зрения, там и браузерные возможности, и семантика, и a11y, в общем шик Единственное, бывают реально корявые либы которые такое делать не позволяют, например rsuite
Stanislav
В общем, в любом случае корректнее с обработчиком на форме и кнопкой/инпутом submit, со всех точек зрения, там и браузерные возможности, и семантика, и a11y, в общем шик Единственное, бывают реально корявые либы которые такое делать не позволяют, например rsuite
К слову, есть какой-нибудь топ паттерн для структуры приложений? Например, должна быть тонна компонентов и минимум чистой вёрстки в них в случае map или switch, или же наоборот?
Stanislav
Нет такого.
Понял. Сам как считаешь касательно вопроса о количестве компонентов в предыдущем сообщении?
Китикет
К слову, есть какой-нибудь топ паттерн для структуры приложений? Например, должна быть тонна компонентов и минимум чистой вёрстки в них в случае map или switch, или же наоборот?
Бесконечное заворачивание верстки в компоненты может и усложнить понимание, но вообще зависит от того насколько разработчик решил запариться
Китикет
Так что всегда по разному получается, и тут нет никаких бест практисов
Китикет
А если ты любитель юзать классовые компоненты, тогда даже лучше избегать большое количество компонентов :)
Stanislav
Бесконечное заворачивание верстки в компоненты может и усложнить понимание, но вообще зависит от того насколько разработчик решил запариться
У меня сейчас вопрос стоит таким ребром: Есть 4 route с путями: /test, /test/:type, /test/:type/:id, /test/:type/results. Я сначала каждый из них сделал компонентами, но необходимость постоянного поднятия состояния в основной компонент test обязывает писать больше кода. И тут внутри меня холивар)
Stanislav
Используй стор менеджер.
Я чуть позже буду редакс подвязывать
Андрей
Я чуть позже буду редакс подвязывать
Тогда будешь писать больше кода.
Китикет
Здесь стейт менеджер проблему с пропсами решает, надо страницу/компонент каждого роута к нему подключить просто
Stanislav
Тогда будешь писать больше кода.
Тут не спорю. А ты какие имел ввиду стор менеджеры?
Китикет
Что за стейт менеджеры?)
Редаксы и так далее, + их биндинг для реакта
Андрей
Тут не спорю. А ты какие имел ввиду стор менеджеры?
Любые которые тебе нравятся: Redux, mobX, effector, reatom.
Stanislav
Редаксы и так далее, + их биндинг для реакта
Так я и так его буду использовать)
Stanislav
Любые которые тебе нравятся: Redux, mobX, effector, reatom.
Говорили тут обсуждалось, что редакс умирает. Так ли это и почему?
Китикет
Говорили тут обсуждалось, что редакс умирает. Так ли это и почему?
Ну умирать он еще долго не планирует, но сейчас уже мало кому он нравится, когда есть лучшие варианты
Maxim
Говорили тут обсуждалось, что редакс умирает. Так ли это и почему?
Большинство компаний используют его потому что надежно
Stanislav
Большинство компаний используют его потому что надежно
Т.е. буду я использовать его или нет, если идти работать в нормальное место с React, Redux нужно знать по умолчанию?
Китикет
Ну умирать он еще долго не планирует, но сейчас уже мало кому он нравится, когда есть лучшие варианты
Это как раз потому что бизнесу выгодно, разработчики обычно немного дешевле, их намного больше (так как все редакс знают) и так далее
Китикет
Что сам используешь и что можешь посоветовать на замену редаксу?
На работе редакс, потому что проекту пару лет, а на своих проектах эффектор юзаю
Китикет
Если для целей поиска работы что-то конкретное изучать, это сначала естественно редакс или мобх, если для себя и для понимания других вариантов, это всякие эффекторы, реатомы и тд)
Китикет
Но в будущем и эффекторы смогут выйти на бизнес рынок, но это нельзя никак спрогнозировать
Китикет
Сейчас вроде есть пара проектов, которые эффектор/реатом в проде юзают, но это единицы и их не достаточно для удобного поиска работы, может по знакомству залететь получится, или по рекомендации
Stanislav
А если ты любитель юзать классовые компоненты, тогда даже лучше избегать большое количество компонентов :)
Касаясь этого, конечно куча компонентов пугает, но и код, в котором куча map, filter, switch, if-else в одном компоненте с длиной строк кода 100+, тоже выглядит грубо
Stanislav
Но в будущем и эффекторы смогут выйти на бизнес рынок, но это нельзя никак спрогнозировать
Время такое, что лучше знать всё и сразу, чтобы быть удобным для всех(
Stanislav
Классовый компонент такие проблемы не решает)
Так я их использую просто за то, как они выглядят) Не именно потому что я с их помощью пытаюсь что-то исправлять в качестве кода
Китикет
Касаясь этого, конечно куча компонентов пугает, но и код, в котором куча map, filter, switch, if-else в одном компоненте с длиной строк кода 100+, тоже выглядит грубо
Если ты конкретно про количество компонентов, то конечно надо выносить все до определенной степени в компоненты, но не так чтобы из блока текста делать 3 компонента друг в друге по очереди
Dmitry
Ребят, подскажите, тут всё ок с этим кодом?
В функции нету смысла (в дополнительной)
Китикет
Так я их использую просто за то, как они выглядят) Не именно потому что я с их помощью пытаюсь что-то исправлять в качестве кода
По-моему const Message = ({ ... }) = { return ... } куда лучше выглядит как классовый аналог, но вот function Message({ ... }) {} как в доке у реакте - я не очень понимаю Для меня конструкция function как-то не подходит логически для такой сущности как реактовский компонент
Stanislav
Если ты конкретно про количество компонентов, то конечно надо выносить все до определенной степени в компоненты, но не так чтобы из блока текста делать 3 компонента друг в друге по очереди
Не совсем так. Больше про такой случай: <Switch> <Route exact path="/test"> <h1>Test</h1> </Route> <Route path="/test/:type"> <h1>Test type</h1> </Route> </Switch> или <Switch> <Route exact path="/test"> <Test /> </Route> <Route path="/test/:type"> <TestType /> </Route> </Switch>
Stanislav
Помнится, видел какое-то видео, где автор разбирая react на примере твиттера говорил, что компонент там буквально всё. И кнопка лайков, и кнопка твита, и текстовое поле и блок, который их объединяет. По сути правильно, понятно, но когда в components 10-100 файлов, реально можно потеряться
Китикет
Функция билдер. Не пойму что воспринимать сложно?
Компонент для меня - определенная сущность, а обычные функции через function для меня не несут никаких сущностей, не могу в полной мере обьяснить
Китикет
Помнится, видел какое-то видео, где автор разбирая react на примере твиттера говорил, что компонент там буквально всё. И кнопка лайков, и кнопка твита, и текстовое поле и блок, который их объединяет. По сути правильно, понятно, но когда в components 10-100 файлов, реально можно потеряться
Они и не должны в куче лежать, фичи обьединяются в features, у них есть основной компонент и components, которые тоже могут иметь основной компонент и детей, получается дерево, но важно чтобы оно сильно глубоким не было
Stanislav
<Route exact path="/test" component={Test} />
Я писал сначала так. Потом, когда надо было добавлять свои пропсы, стал писать через render=()=> { <Test /> }. А в доке react router увидел этот вариант: <Route exact path="/test"> <Test /> </Route> и он мне понравился. Естественно при это Test экспортируется в WithRouter
Stanislav
В Фейсбуке 50к компонентов
Да, читал где-то такое
Китикет
Т.е. components/test/components, components/book/components? Или как?
features/ SignIn/ reducers/ components/ Something.js Form/ index.js Form.js FormView.js index.js SignIn.js SignInView.js
Китикет
Что жутко?
Stanislav
Что жутко?
Структура жуткая
Китикет
Надо альтернативы писать, а не "жутко")
Stanislav
Что жутко?
Я ещё понимаю: components/ test/ templates/ test.js testType.js testTypeID.js testResults.js reducers/ test.js actions/ test.js styles/ test.scss Но так....
Stanislav
И то styles можно убрать, так как в общей папке styles достаточно держать по файлу на компонент
Китикет
1) Редьюсеры, экшны, типы и тд разделять по разным папкам - невозможно поддерживать, вот нормальное решение reducers/ test/ index.js reducer.js actions.js types.js selectors.js 2) 100 компонентов в одной папке, серьезно?
Stanislav
Те же яйца
Похоже, но всё же другое
Dmitry
features/ SignIn/ reducers/ components/ Something.js Form/ index.js Form.js FormView.js index.js SignIn.js SignInView.js
features/ sign-in/ organisms/ actions (санки) selectors store Ну мне кажется у всех по разному вообще (с такой структурой я писал мобильное приложение, не маленькое (с функционалом hh плюс новый)