from
где грань когда реактовский компонент (без предметно-ориентированной специфики) перестает быть частью ui-kit?)
когда ты понимаешь, что компонент не общего назначения, а специфичный для бизнес-логики проекта
Dmitry
когда ты понимаешь, что компонент не общего назначения, а специфичный для бизнес-логики проекта
Т.е. если я сделал <Page>, <Content>, <PageHeader> и т.п. - всё это получается часть ui-kit?
Dmitry
Ок, спасибо
Dwight🫀
))
Bogdan
))
а как сделал
Oleg
вопрос по линту. в правиле react/jsx-props-no-spreading есть вообще смысл?
Looch
да
Cybernated
Да, обязывает тебя деструктуризировать пропсы
Ivan
вопрос по линту. в правиле react/jsx-props-no-spreading есть вообще смысл?
есть, когда с тобой в команде работают отшибленные люди, кторые делают {…props} на три уровня вниз для «ну вдруг пригодится там, внизу»
Oleg
Да, обязывает тебя деструктуризировать пропсы
я в курсе. не понимаю зачем. я в 10 местах просто передаю объект.
Cybernated
Ну или добавлять точечно их
Aleksandr
@ayanin не сработала идея, ведь если передавать выражение, оно сразу срабатывает при первом же рендере без клика
const Tab = ({ onClick, tabName, text }) => { const onTabClick = () => onClick(tabName) return <button onClick={onTabClick}>{text}</button> } class Page extends React.Component { constructor(props) { super(props) this.state = { activeTab: '' } this.handleTabClick = this.handleTabClick.bind(this) } handleTabClick(name) { this.setState({activeTab: name}) } render() { return <Tab onClick={this.handleTabClick} text="bla bla" name="Users" /> } }
Looch
а если пишете без типизации, то может стать очень больно от {...props}
Oleg
есть, когда с тобой в команде работают отшибленные люди, кторые делают {…props} на три уровня вниз для «ну вдруг пригодится там, внизу»
в моём случае использование такое - <Pagination {...pagination} /> и я так пишу в 10 местах. а разворачивается оно на 14 свойств.
Ivan
зависит от адекватности разработчиков, нет однозначного ответа иногда это да, удобно. в руках идиота и без типизации {…props} становится адом
Vlad
ребят, такой вопрос если в обработчик эвента надо передать параметры, то нормальная ли практика писать onClick = { handler.bind(null, param) } ? или все же лучше в стрелочную обернуть?
Cybernated
Можно обернуть в переменную в рендере, и закинуть как pagination={pagination}, хотяяя, какие подводные камни у этого есть?
Китикет
а если пишете без типизации, то может стать очень больно от {...props}
Иногда делать типизацию большинства пропсов для button - это еще больший ад
Oleg
зависит от адекватности разработчиков, нет однозначного ответа иногда это да, удобно. в руках идиота и без типизации {…props} становится адом
ну, я понимаю. просто я {...props} не пишу. можно сделать так, чтоб оно не ругалось, если там только деструктуризация?
Oleg
wtf
Ivan
Иногда делать типизацию большинства пропсов для button - это еще больший ад
для button — да, для BalancesHistoryGrid — ад, это понять, что же ему нужно из {…props} для работы. и что уже можно удалить. а что внутри уже полгода не используется я же говорю — нет однощзначного ответа
Azamat
Иногда делать типизацию большинства пропсов для button - это еще больший ад
есть же HTMLButtonElement у которого есть ButtonHTMLAttributes, насколько я помню. Зачем их спредить, или я не понял вопроса? Это в случае использования typescript
Bohdan
А можно настроить преттиер так чтобы использовались првила еслинта?
Ilya
Всем привет! Посоветуйте либу для реакта Пишу чат и нужно реализовать штуку, чтобы при открытии чата все сообщения скролились вниз и если кто-то написал в чат, то тоже скролился вниз, при условии, что сам пользователь проскролил в самый низ Знает кто похожую либу ?
Bohdan
да, в доке есть описание как их подружить
https://github.com/prettier/eslint-plugin-prettier вот это что ли? так оно вроде не форматит
Китикет
https://github.com/prettier/eslint-plugin-prettier вот это что ли? так оно вроде не форматит
И да, этот плагин тоже надо (как раз чтобы еслинт форматил с правилами претира)
Китикет
Так надо наоборот форматить с правилами еслинта
Для этого надо плагин вскод-претир, а он нормально не работает с еслинт 6+ версии, на кнопку форматить не получится Если после сейва - скорее всего получится
Китикет
та причем тут вскод
Ну такое тогда невозможно, преттир не умеет форматить с правилами еслинта, только еслинт с правилами преттира, впрочем для тебя разницы быть не должно
Ivan
подскажите, есть ли какие-либо адекватные варианты отслеживания смены локации роутером и обновления DOM (отрисовки менюшек) из js, заинжекченного на страницу, вне реакта?
Alex
добрый вечер, можно вопрос. какие преимущества дает разбиение одного bundle.js на (vendor - react + polyfill - возможно что то еще) и "клиенский js"
Китикет
А зачем тогда форматить еслинтом, если он форматит по правилам преттиера?
Он форматит по своим правилам + правилам преттира (если с преттировским плагином)
Китикет
Если пробовать чтобы преттир форматил по своим правилам, плюс правилам еслинта - то я без понятия как такое организовать, помню только плагин в вскод (ну и подобные плагины для других редакторов) такое умели, а сам преттир - ну хз
Ivan
добрый вечер, можно вопрос. какие преимущества дает разбиение одного bundle.js на (vendor - react + polyfill - возможно что то еще) и "клиенский js"
Возможность загружать приложение по частям (когда открыта страница каталога, код для страницы профиля — лишняя нагрузка на сеть и процессор клиента). Если, допустим, vendor — это отдельный чанк, то он будет реже меняться от деплоя к деплою, а значит при деплое новой версии приложения клиент не будет грузить vendor по сети, а возьмёт из кеша (при условии, что при деплое не менялся код в vendor).
Alex
спасибо за пояснение!
Anonymous
Есть какой-нибудь layout ui kit на гридах, который представляет только самые универсальные компоненты, без всяких кнопок, таблиц и прочей ненужной шелухи?
Anonymous
Если не кнопки то что ещё более универсальное может быть?
Мне нужны компоненты для позиционирования, кнопки я сделаю сам что бы самому не пилить компоненты типа <Row gap={10} breakpoints={[xs: {}, sm: {}]} а заюзать готовое
Oruj
Шалом кука появляется ПОСЛЕ создания компонента. не знаю как ее отловить. так не получается:
Oruj
так не поймаешь. А кто ставит куку?
а так? тоже самое да? https://stackoverflow.com/questions/51109559/get-cookie-with-react
Vladimir
а так? тоже самое да? https://stackoverflow.com/questions/51109559/get-cookie-with-react
реакции на изменении куки это тебе не даст
Oruj
так не поймаешь. А кто ставит куку?
куку ставлю в expressjs. правда смущает что ее устанавливаю в этом виде. а по гет не хочу передавать текст,
Китикет
Так она же должна быть сразу? По крайней мере после авторизации при перезагрузке
Oruj
Vladimir
а) httpOnly куку ты в js не получишь б) это какой-то ajax-запрос? Вот и лови ответ на него
Oruj
а) httpOnly куку ты в js не получишь б) это какой-то ajax-запрос? Вот и лови ответ на него
это приходит когда верифицируешь аккаунт по имейлу ща если исправится, покажу ее
Maksim
Мне кажется или в куке передаётся текст для отображения?
Китикет
Вот еще тема есть https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/onChanged Но в эдж вообще не работает И хз зачем тебе вообще это сделать, Владимир talking real things, после запроса в стейт менеджере делаешь чо надо, вот компонент и узнает
Oruj
Мне кажется или в куке передаётся текст для отображения?
именнно так и стирается через 10 сек) все очень круто) текст отражается в снакбаре)
Китикет
именнно так и стирается через 10 сек) все очень круто) текст отражается в снакбаре)
Зачем для таких целей использовать куки? Еще и такое костыльное получение текста на клиенте
Archer
всем привет, ребят можете помочь, проблема в том что верхний компонент(Timer) не перерисовывается при изменении хранилища https://codepen.io/Kiramick/pen/MWYoYQm?editors=1010
Oruj
Зачем для таких целей использовать куки? Еще и такое костыльное получение текста на клиенте
эммм потому что по клику на линк в мейле(верификация по мейлу) вас перекидывает на domain.com/api/auth/verify/verify_token23894y2343264932 и сразу же редирект на www.domain.com/login и там нужно отразить снакбар с текстом что мол имейл верифицирован. я покажу четь позже
Archer
и в нем все время старое состояние
Oruj
не понял
Китикет
всем привет, ребят можете помочь, проблема в том что верхний компонент(Timer) не перерисовывается при изменении хранилища https://codepen.io/Kiramick/pen/MWYoYQm?editors=1010
Потому что componentDidUpdate во WrapperComponent не выполняется и подписки не происходит, а состояние там актуальное на самом деле
Китикет
но во второй компоненте сробатывает всё(в Interval)
Эм, так там ничего из пропсов не рендерится, они там всегда старые И компонент, а не компонентА)
Archer
ну блин) смотри если нажмёшь на кнопку start или stop затем на +/- то увидишь
Archer
что меняется хранилище и состояние в Interval и он перерисовывается но вот Timer нет
invasion
Тоже обратили внимание?)
invasion
После конфликта рамблера, появилась надпись
Archer
вроде connect правильно сделан, может в Provider что то упустил
Vladislav
Тоже обратили внимание?)
она на след. день вроде появилась после инцидента))0