Anonymous
Anonymous
Anonymous
он тут не причём, короче)
Сергей
Кто уже юзает хуки от redux (useDispatch, useSelector) и тестировал такие компоненты? есть пару вопросов по написанию тестов. Был бы благодарен, если бы кто-нибудь в личку отписал по этому вопросу
Korg
Привет всем.
Ребята, пытаюсь написать тест с testing-library
И просто закипел, может кто-то направить на путь правильный?
Вот примерно такой компонент, нужно протестровать отправку файла. Загрузчик из Antd
Korg
не получается даже инпут найти в рендере модалки
Roman
Kostya
Делаю веб магазин используя карусель но в material-ui ее не нету а есть бутсрапе что выбрать. Вообще как полезно использовать готовые штуки или оучше щабросить и свои написать?
Rauf
Всем привет подскажите пожалуйста почему onScroll не работает
Rauf
https://codesandbox.io/s/black-wood-fp2r0
Revival
Подскажите, как получить актуальный state в event listener функции? (react hooks..)
https://codesandbox.io/s/admiring-pascal-xbj6o
Rauf
Revival
Daniil
Rauf
Revival
в deps добавить
имеешь ввиду первый useEffect? я ожидал, что eventListener можно повесить лишь один раз..
Rauf
Mikhail
народ, таблица из antd на больших наборах данных (500 элементов) будет тормозить?
Mikhail
лучше сразу делать на react-table / virtualized или на антд будет норм с пагинацией?
TK
А почему ошибка появилась? если ставлю props.dispatch пишет ошибку типа пропс нельзя ставить
Revival
TK
TK
TK
Sviataslau
Подскажите плз, validateForm функция, объявленная внутри фанкшнл компонента, будет пересоздаваться каждый раз? есть какие-то оптимизации внутри реакта в этой связи (кроме memo())? не нашел в доках инфы
Anton
Sviataslau
это понятно) но всё-таки?
Anton
если там не используется замыкание с чем-то внутри этого компонента
Anton
даже если ты будешь использовать useCallback или useMemo, она всё равно будет пересоздаваться каждый раз, просто опеременной validateForm не будет присваиваться новое значение функции, поэтому между рендерами компонента, куда ты передаёшь эту переменную как свойство, старое и новое значение будут равны ===
Anton
и если у тебя нет проблем с перформансом от создания одной функции каждый рендер (а я думаю, что их нет), то не нужно заниматься преждевременной оптимизацией
Sviataslau
Anton
не понял про передачуvalidateForm пропсом в рендер , она же создается внутри самого рендера как раз?
ну вот у тебя компонент:
let NoBill = ({ onSubmit }) => {
let validateForm = event => {
event.preventDefault()
onSubmit()
.then(() => { /* ... */ })
.catch(err => { /* ... */ })
}
return (
<div>
<Form validateForm={validateForm}>
...
</Form>
</div>
)
}
ты передаёшь в форму функцию validateForm как параметр. если она у тебя каждый рендер NoBill разная, то в форме каждый раз её предыдущее значение не будет равно текущему. ты можешь это "заоптимизировать":
let NoBill = ({ onSubmit }) => {
let validateForm = useCallback(event => {
event.preventDefault()
onSubmit()
.then(() => { /* ... */ })
.catch(err => { /* ... */ })
}, [ onSubmit ])
return (
<div>
<Form validateForm={validateForm}>
...
</Form>
</div>
)
}
теперь у тебя есть гарантия, что если onSubmit не меняется, то не изменится и значение validateForm, поэтому гипотетически внутри компонента формы проп validateForm не будет меняться и форма не будет перерендериваться.
но отвечая на твой вопрос «будет ли она пересоздаваться каждый раз» — да, пересоздаваться каждый раз будет, но переприсваиваться — нет.
Sviataslau
понятно, спасибо
Tray
Парни, хэлп ми плиз. Пишу апликуху на реакте. Структура данных по мере написания разрастается и код в reducer-е становится похож на чью-то блевотню. Потому-что 5 объектов каждый из которых имеет по 2-4 уровня вложенности - ну это перебор. Особенно если нужно поменять поменять верхний пропс (ну например флажок, dataLoaded)
Tray
Я вот щас почитал про reducerCombining. Оно мне поможет?
Rrr
а у тебя один редьюсер на все приложение?
Tray
Ну да. Я ж не гуру
Rrr
ну только вот это основы
Vadim
В вопросе выше уже ответ дали
アレクサンダー・バキマトフ
Andrey
Andrey
Andrey
можешь свой кейс привести
Andrey
или в редаксе редьюсеры вниз не комбайнятся? 🧐
Tray
Вложенности в 2-3 уровня мне потенциально не избежать. Но так да, поэтому и спрашиваю. Значит комбайны, спасибо.
Alex
добрый вечер, можете подсказать, наверно глупый вопрос. в React Function Component - не могу создать поле для записи числа, state - не нужен - рендерить ничего не нужно
если пишу const - то он не изменяемый, а let или var - из дочерних функций не видно те что я объявил в самой компоненте вначале, подскажите что я не так делаю?
смысл что есть функция которая устанавливает currentid - у компонента <select option> - на событие onChange
Сергей
есть библиотека React-hotkeys с хоком withHotKeys. Он пробрасывает пропс hotKeys в компоненту. Так вот, как выглядит тип у этого пропса HotKeys?
Tray
Даже в документации есть примеры, как организовывать редьюсеры
Я вообще бэкендщик так-то. И у нас основная система - это коробка. Раньше кастомных вьюхи вообще пилились на jquery под неё от подрядчика. Либо aspx страничка возвращалась. Но нам удалось убедить всех, что реакт - это хорошо. Так что вот осваиваемся.
Еще раз спасибо.
Andrey
Ilya
Через задний проход 😂
Tray
Ну дык. Скорость доработки функционала после ввода реакт выросла. Бизнес свои свистоперделки быстрее стал получать. А то пойди разбери миниапп написанный на jquery. Прям радует возможность допилить какой-то компонент к и связки к нему и не морочить я над роботой остального куска. И сразу ясно, что перепиливать. Красота же
Andrey
Ilya
Ну
Igor
Tray
Тогда ещё вопрос. Состояние из редьюсера через getderivedstate - это правильно?
Anonymous
@Atassis ↑ Шутки за 300, угомонить бы их
I
Таймураз
@ilyabykov Andrey го без заднепроходных шуток
Таймураз
На будущее
Alexander
mssg.ru - новый способ развода?
Tray
скорее нет, чем да, через connet и mapstatetoprops каноничнее
Не, ну это я и так сделал. Но у меня есть state в компоненте, который определяется в зависимости от значения state-a в store. Включать сам state в стор не хочется, потому что этот стейт с бизнес-данными не связан напрямую, плюс меняется редко.
Aleksey
ребят. есть паблик такой же только по salesforce. и может кто-нибудь шарит в нем?
Oleg
halp.
у меня есть блок Controls. там есть слева выбор элемента, а справа две кнопки - добавление и удаление. как назвать правый блок?
і64
Oleg
Actions?
получается какой-то синоним к controls
🦜
Oleg
значит это не контролс
не, ну, сам блок (общий) он как бы с кнопками. там есть выбор элемента с который потом будет работать юзер, а есть ещё две кнопки (save, remove). и что это если не controls?
Ivan
Ребята
Dmitry
Давайте жить дружно