i
Aleksandr я передаю всего родителя, потому что, например, вот есть у меня компонент "список постов и комментов", соответссенно в нём есть компонент "пост", внутри которого компоненты "комментарий", внутри которых уже в бесконенчной иереархии тоже комментарии, и вот что бы не кидать дочерним компонентам одни и те же методы, я решил кидать имнепосрественно самого родителя и уже юзать его методы под редакосом со значениями из дочер компонента
i
ну тут нарно лучше код показать, а то со слов не оч понятно, как-нить потом залью сюда
i
про подключение тоже сделаю скрипт, чтоб показать что не работает
El
Добрый вечер. В компоненте есть таблица, в ней над одним из столбцов инпут, по которому отправляется запрос в БД с содержимым этого инпута, nameFilter. Это параметр "имя", из БД будут возвращены все записи, содержащие "имя" в поле "имя" записи. По вводу текста в этот инпут введённый фильтp ставится на state: <input type='text' name='name' onChange={(evt) => setNameFilter(evt.target.value)} /> Выше в коде есть запрос в БД: if (nameFilter) { getRecordsForPage(1, nameFilter); } Такой код приводит к бесконечному перерендеру страницы. Отчего так и как сделать правильно? Идея в собрать все фильтры (будет 3 штуки) в state компонента и затем по изменению любого из фильтров отправлять запрос в БД со значениями всех (3-х) фильтров.
Мадияр
Всем добрый вечер. Написал код для поиска фотографий через api unsplash. Ввожу в поле поиска ключевое слово и у меня даже в консоли ничего не выводится. Что я делаю не так? подскажите плз
Ivan
Вы же нигде не используете функцию с консолью, чего вы ожидали?
max
Подскажите, пожалуйста, насколько правильно использовать callback от setState в случае, если мы передаем данные из state от дочернего к родителю ? Есть ли более удачные варианты? пример кода: https://codesandbox.io/s/goofy-https-0ypt8
🅅aleriy
ты можешь подробно рассказать что ты в каждой строке своего кода делаешь? для начала самому себе конечно
Ivan
Подскажите, пожалуйста, насколько правильно использовать callback от setState в случае, если мы передаем данные из state от дочернего к родителю ? Есть ли более удачные варианты? пример кода: https://codesandbox.io/s/goofy-https-0ypt8
У вас два стейта, которые отвечают за одни и те же данные. Зачем? В дочернем компоненте сразу передавайте данные родителю — внутренний стейт не нужен.
Ivan
Это упрощенный пример. Стейт нужен.
В вашем примере стейт не нужен. Как у вас там в усложнённом примере — мы не угадаем. Почти всегда дублировать стейт внутри и снаружи плохо.
max
Я не спршивал о необходимости стейта. Вопрос был исключительно про способ передачи данных из state дочернего элемента.
Мадияр
ты можешь подробно рассказать что ты в каждой строке своего кода делаешь? для начала самому себе конечно
подключаю эффект состояние и fetch для next js затем функцию Search с константами для эффектов состояния, дальше обработчики события и сам запрос
Мадияр
Сорри если задаю тупые вопросы, просто совсем новичок в react, пару месяцев назад только начал изучать программирование
Evgenii
а как с svg лучше всего работать? как js файл закинуть и не париться? или проходиться по.json, где будут все svg (по аналогии с валидаторами)
🅅aleriy
подключаю эффект состояние и fetch для next js затем функцию Search с константами для эффектов состояния, дальше обработчики события и сам запрос
сорян, я конечно не первый день реактом занимаюсь и программированием в принципе, но я ни слова не понял что ты описал
i
@vklimv потому что если у родителя есть дочер компоненты и у них есть дочер компоненты и у них итд итп каждый раз при расширении прложения прокидывать с родителей в детей ф-ции неудобно
i
удобно когда сразу можно вызваать ф-цию
Dmitry
удалили мой актуальный комент
🅅aleriy
@Bessssarab надо для себя описать четко функцию компонента, что он должен делать если это форма с кнопкой сабмит, то наверное должен быть где то тэг <form onSubmit={submit}> тут внутри инпуты и кнопка сабмит <button>Submit</button> </form>
Volodymyr
удобно когда сразу можно вызваать ф-цию
Хуки, контексты... знаете об этих концепциях?
i
@vklimv ещё не дошёл
Volodymyr
@vklimv ещё не дошёл
Вы переизобретаете контексты. И не в лучшем варианте)
i
@vklimv спасибо, терь буду знать про чё конретно почитать
Мадияр
удалили мой актуальный комент
Я успел прочитать ваше сообщение 😅 Понимаю вам хочется самоутвердиться за чужой счет но если нечего сказать лучше промолчать, как считаете?)
Dmitry
это не самоутверждение это проблема которая сейчас происходит
Мадияр
И в чем же она?
El
Так происходит, потому что если у тебя появляется этот фильтр, то ты вызываешь эту функцию при каждом цикле рендеринга
Выкаментил пока. Как мне триггерить useEffect при изменении переменных, которые приходят изнутри компонента при заполнении юзером инпута, а не из его пропсов?
🅅aleriy
Выкаментил пока. Как мне триггерить useEffect при изменении переменных, которые приходят изнутри компонента при заполнении юзером инпута, а не из его пропсов?
менять локальный стейт например и отслеживать его в эффекте [state, setState] = useState() useEffect(() => { ... }, [state]) <input onChange={(value) => setState(value)} /> примерно так
Andrey
Привет, ктонибудь в курсе как выглядит синтаксис подключения коменента к стору, через connect, и подключения к нескольких хокам ондовременно?
Andrey
connect(mstp, mdtp)compose(hoc1, hoc2(component) не работает
El
Наподобие с withRouter и ещё с Redux формой, например? Один HOC внутрь другого.
Andrey
import { compose } from 'redux'
A
Привет как можно состоянии state передать на другой js файл и там менять состояние ?
Привет, сегодня видел этот вопрос и как раз с этим сегодня столкнулся в работе. В общем, для решения данной задачи тебе необходимо подключит redux
Bogdan
import { compose } from 'redux'
я уже не помню, если ты хочешь обьединить хоки, юзали рекомпоз, может не то помню
Andrey
Наподобие с withRouter и ещё с Redux формой, например? Один HOC внутрь другого.
типа того, с роутером и с лоадером. пробовал оборачивать один в другой тоже ругается
Bogdan
import { compose } from 'redux'
вот в рекомпозе как можно
Bogdan
https://habr.com/ru/company/raiffeisenbank/blog/354768/
Bogdan
почитай, тут довольно понятно написано
Sergey
а без хоков обойтись есть вариант?
Bogdan
хуки
Sergey
хуки
ну это я у автора вопроса как бы и спрашиваю)
Bogdan
я уже не помню, давно рекомпоз не юзал, но там вот ты в композ передаешь все хоки свои, даже жизненый цикл имитировали там, забыл что за либа
Bogdan
в каком смысле забыл? Ты же её назвал))
не, а там жизненный цикл у кого был? в самом рекомпозе? этого не помню
Bogdan
а ну значит рекомпоза и хватит, если логика которую пихаешь в рекомпоз, повторяется много где, можно вынести в усилитеь как в статье и его переюзывать и расширять дополнениями
Bogdan
мне нравился рекомпоз, когда его юзал, довольно круто выглядит
Vlad
Народ тут я решил пописать свои "любимые" тесты и вот пробдема! Как в этом отследить изменения в пропсе? it("add a tag", () => { const addTag = jest.fn(); const removeTag = jest.fn(); const { queryByTestId, queryByPlaceholderText, debug } = render( <Tags tags={["tag"]} addTag={addTag} removeTag={removeTag} /> ); const button = queryByTestId("add-button"); const input = queryByPlaceholderText("Please Enter Tag"); fireEvent.change(input, { target: { value: "new" } }); expect(input.value).toBe("new"); fireEvent.click(button); debug(); }); С waitFor elementt не работает! Как вообще получить доступ к props в тесте? PS: react-testing-libraty Буду очень благодарен, если кто, что подскажет 🤗!
Andrey
https://habr.com/ru/company/raiffeisenbank/blog/354768/
ок, спасибо, сейчас изучу
Sergey
ок, спасибо, сейчас изучу
но лучше бы обойтись хуками всё же))
Andrey
мне нужно сделать обертку для isLoading стейта, и возвращать окно загрузки, в случае когда фетчатся данные
Andrey
как мне тут могут помоч хуки?
Andrey
хуки это хуки, хоки это хоки =)
Sergey
как мне тут могут помоч хуки?
const { LoadingModal } = useLoadingModal(isLoading)
Sergey
хуки это хуки, хоки это хоки =)
ХОКи в большинстве случаев смысла не имеют легко заменяются на хуки
Sergey
а ещё трудночитаемы при использовании нескольких
Andrey
const { LoadingModal } = useLoadingModal(isLoading)
получается, поверх будет вылезать модалка? c такими приемами я еще не знаком
Oleg
Всем привет, можете скинуть пример как на react сделать zoom картинки ? К примеру у нас есть картинка и 2 кнопки, + и - соответственно,мы можем приближаться и удаляться. Либо почитать как можно такое сделать. Вообще конечно и колесиком мыши надо делать аналогичные действия. Нужно направление откуда двигаться
W
события на прокрутку колёсика мышки, потом смена высоты и ширины, компонент картинки со стейтом или параметрами ивент который меняет, всё
Daniil
Всем привет. Есть вопрос про события. В общем моя задача - сделать модальное окно, закрываться должно кнопкой внутри модалки или если нажимать на внешнюю область(в любом месте документа). Есть div в div'е, на внешний div повешано onClick обработчик, Когда я нажимаю на внутренний div, срабатывает onClick обработчик внешнего div. Такую проблему норм можно решить с проверкой currentTarget и target, но тогда, если вешать тот же обработчик на, допустим кнопку, в которой есть еще svg иконка, то пользователю приходится кликать именно на кнопку, минуя икноку, как это можно решить?
Anonymous
Или проверкой currenttarget использую элемент && элемент
Daniil
Перехвати всплытие
Спасибо, неправильно его использовал оказывается)