King Of
Может не надо?)
Да мне для внутреннего сервиса.
Артём
styled-components всё ещё лучшее решение для работы со стилями в реакте? или что-то моднее появилось?
Danila
Danila
Кто-то из 7800 людей точно юзайл
🐙
Да мне для внутреннего сервиса.
https://material-ui.com Может тебе этого хватит?
Danila
😠
El
В Реакт компонент с Socket.IO такой код. const socket = socketIOClient('http://localhost:8080'); useEffect(() => { socket.on('messages', messages => { setMessages(messages); }); }, []); Как избавиться от ворнинга об отсутствии socket в зависимостях useEffect() ? Та же переменная socket используется в компоненте вне useEffect() в const onSubmit = evt => { evt.preventDefault(); socket.emit('new-message', { id: uuid.v4(), msg: message }); };
Артём
да это понятно, я в форме шутки. меня интересует лучшее, разумеется
El
Добавить сокет в зависимости же
Тогда страница начнёт очень часто обновляться. Socket поллит очень часто, если верно понимаю.
Default
Может не надо?)
А то, что там tree-shakeable написано тебя не смущает?
Default
https://material-ui.com Может тебе этого хватит?
И доку на v1 дал, когда текущая v4.3.2
El
По идее, нет. Может быть, страницу блочит что-то ещё.
El
Сам инстанс socket от этого не должен же меняться, не?
При добавлении socket в зависимости массив сообщений в компоненте бесконечно логируется в консоль.
Andrey
Сам инстанс socket от этого не должен же меняться, не?
инстанс у него каждый рендер создается
Andrey
При добавлении socket в зависимости массив сообщений в компоненте бесконечно логируется в консоль.
пушто сокеты нужно рулить не в компоненте, а в слое стейт менеджмента
King Of
В общем, там(antd) есть Table. На сайте у них приведен пример для работы с ajax. Вот тут https://ant.design/components/table/#components-table-demo-ajax С пагинацией, фильтрами. Но проблема в том, что в случае фильтров он делает реквесты вида http://host/?filter_name[]=filter_value И как это переназначить - не ясно. Я уже и гитхаб их, и соответствующий тег на SO порыл, и в сорц пакета проваливался. Бэкэнд предоставляет фильтры по запросу в виде http://host/filter_name=filter_value. То есть без квадратных скобок. Кто-то сталкивался?
El
В экшене.
King Of
Можно, конечно, костылей нагородить, а потом проверка if !== undefined: filter_name: filters.filter_name.toString()
King Of
Но мне кажется, что есть нормальный способ.
Дмитрий
Гайз, добрый день! Есть вопрос по react, есть список компонентов, сгенерированный из вызова метода api, при нажатии на кнопку в одном, должен открываться другой компонент. Объясните чайнику пожалуйста, как это реализовать если у меня только есть id того компонента который нужно открыть полученный при нажатии на кнопку
Aidyno
Работают
Работают:)
Дмитрий
Есть главный компонент, который и содержит этот список, я понимаю что в нем нужно вызывать функцию которая будет менять состояние в другом, но как явно сказать в каком именно компоненте
Дмитрий
вот так выглядит
Дмитрий
допустим в первом boolean нажали кнопку, вызвался метод api, пришел id компонента Text у которого ключ 761, как у него поменять состояние
El
пушто сокеты нужно рулить не в компоненте, а в слое стейт менеджмента
В компоненте был импорт import socketIOClient from 'socket.io-client' для слушания сокета: const socket = socketIOClient('http://localhost:8080'). Если по сабмиту формы для ввода нового сообщения это сообщение уходит в экшен, тот как иметь импорт socketIOClient в экшене?
El
создавать точку подключения к сокету в отдельном файле, импортить уже ее
Импортить эту точку в мой компонент, который слушает с сокета?
Andrey
Импортить эту точку в мой компонент, который слушает с сокета?
нет к методам точки биндить экшены, если это редакс типа там socket.onmessage = (event) => store.dispatch(socketMessage(event))
Andrey
и в компонентах слушать ток события
El
Там вместо event само сообщение. В остальном, пробую.
El
нет к методам точки биндить экшены, если это редакс типа там socket.onmessage = (event) => store.dispatch(socketMessage(event))
Была идея подключиться к сокету в экшене и слать полученные сообщения из экшена.
Дмитрий
Гайз, добрый день! Есть вопрос по react, есть список компонентов, сгенерированный из вызова метода api, при нажатии на кнопку в одном, должен открываться другой компонент. Объясните чайнику пожалуйста, как это реализовать если у меня только есть id того компонента который нужно открыть полученный при нажатии на кнопку Есть главный компонент, который и содержит этот список, я понимаю что в нем нужно вызывать функцию которая будет менять состояние в другом, но как явно сказать в каком именно компоненте допустим в первом boolean нажали кнопку, вызвался метод api, пришел id компонента Text у которого ключ 761, как у него поменять состояние
El
Да, я action creators называю экшенами.
Дмитрий
в нем обрабатываются изменения в дочерних компонентах
Dmitry
я так и сделал, компенент Form
Скинь в песочнице что есть
Дмитрий
Скинь в песочнице что есть
в pastebin? или что поразумеваете под песочницей?
El
создавать точку подключения к сокету в отдельном файле, импортить уже ее
Брутал способ: в компоненте, отображающем сообщения из сокета, вынес подключение const socket = socketIOClient('http://localhost:8080') наружу декларации самого компонента (const Chart = ({ isAuthenticated }) => {...}). Есть отзывы по такому способу? Не прочь их узнать.
Bohdan
Как мне обратится к элементам из HTMLCollection? Индексы не работают, getItem не раюотает, итераторы не работают. Но если прост овывести коллекцию в консоль то там будут элементы
Ihor
я так между прочим.. кто-нибудь пробовал строить приложение на одних хуках без редакса? С глобальным стейтом в хуках?
Igor
Ребят, а ни кому не приходилось встраивать реакт-приложения в айфреймы? Работаю над интеграцией с одним сервисом, и столкнулся с проблемой, что роутинг работает в разы медленнее, чем если запускать приложение как обычно, из вкладки браузера - уже весь гугл облазил, информации 0, кто нибудь может подсказать, с чем это может быть связано?
King Of
Это всё, конечно, великолепно. Но каким образом объявлять фильтры и как к ним потом обращаться решают в рамках библиотеки, а не в рамках запроса. Я-то сделаю, но если существует более органичное решение, предусмотренное авторами - я бы предпочел использовать его.
Ihor
имеешь ввиду с глобальным контектом?
имею ввиду без редакса, мобх и прочего https://www.npmjs.com/package/use-global-hook-ts Я вот просто клевую штуку нашел, интересно опробовать
Dmitry
Надоело писать дублирующийся бойлерплейт? Да вы лентяи!!
Ihor
или мне вот больше интересно.. кто-то пробовал как глобальный стейт использовать rxjs?
Anton
привет, подскажите пожалуйста, есть ли юз кейсы, когда в контекст закидывают не стейт, а компоненты? типо такого: const SomeComponent = ({text}) => <div>{text}</div> const ThemedComponents = React.createContenxt({title: SomeComponent}) const App = () => { return ( <ThemedComponents.Provider value={{title: SomeComponent}}> <ThemedComponents.Consumer> {({title}) => title({text: 'Title Text'})} </ThemedComponents.Consumer> </ThemedComponents.Provider> ) }
Anton
оно самое 😄
Anton
я пытаюсь понять подводные камни такого подхода, например что там с ререндерами, дебагом и прочее
Victor
я просто не люблю рендер пропсы, как то путанно выглядят
Victor
я пытаюсь понять подводные камни такого подхода, например что там с ререндерами, дебагом и прочее
за ререндеры я б не парился пока реально не появится проблема с производительностью
Victor
Rauf
Всем привет подскажите пожалуйста возможно ли как нибудь не дублировать такой код
Rauf
<tr> <th scope="row">L</th> <td className="text-left">O</td> <td className="text-left">A</td> <td className="text-left">D</td> <td className="text-left">I</td> <td className="text-left">N</td> <td className="text-left">G</td> <td className="text-left">.</td> </tr>
Rauf
буду при много благодарен
Danila
пжлст
Anton
за ререндеры я б не парился пока реально не появится проблема с производительностью
да, вполне понятно )моя задача прокинуть стилизованный под определенный проект заголовок (проекта два в одной репе) в шаред компоненты, типо для каждого проекта свой заголовок, который стилизуется внутри проекта. спасибо за ответ
Denis
'LOADING'.split('').map( letter => <td className="text-left">{letter}</td> )
У автора первый ребенок имеет другой тег и класс)
Артем
Ребята,а как правильно? создать отдельный компонент для каждого из типов инпутов или же сделать 1 универсальный компонент?
Danila
Ребята,а как правильно? создать отдельный компонент для каждого из типов инпутов или же сделать 1 универсальный компонент?
Текскт и его подтипы (телефон, емейл, вское такое) - отдельно, чекейбл-элементы - отдельно. Рейндж - тоже отдельно. Остальное, думаю, от проекта зависит.
Danila
Если у них достаточно различающееся поведение - сделай, почему нет.