Bogdan
Тогда не работает поиск)))
очевидно, что то ты сделал не так
Ruslan Yumakaev
Вот я и пытаюсь понять, что тут не так
Bogdan
ну поставь длинну массива или id, или еще что то из апи ,хз, проще просто переделать по другому
Ilya
Всем привет! Пишу чат При инициализации компонента скролю всё сожержимое div (к нему я добавил ref scrollingWindow) в конец Но почему-то в такой конструкции он мне пишет что scrollingWindow.current.scrollTo undefined типа ткой функции нет Как можно обойти этот момент, и чтобы при загрузки страницы у нас div скролил вниз ? Эта конструкция работает в том случае, если я загрузил страницу и начал менять диалоги
Ilya
Aлексей
Надо указать в scrollingWindow.current в массиве
Aлексей
Ну и в теле конечно не забыть if(scrollingWindow.current)
Roman
Надо указать в scrollingWindow.current в массиве
не надо указывать. мутация рефа не приводит к ререндеру
Китикет
А аксиос фетчем не надо заменять, затея скорее всего глупая и ничего хорошего из этого не выйдет
Китикет
Sheldhur
А какой сценарий, почему не просто все из моков?
один из бэкендов упал на деве, например. Или еще не готов
Sheldhur
> обычный фетч Это что значит?
тебе это слово знакомо исключительно как функция в js?
Китикет
тебе это слово знакомо исключительно как функция в js?
Звучит как оскорбление) "обычный фетч" в данном контексте может восприниматься только "как обычный фетч" и никак иначе, а что ты еще ожидал?
Dmitry
Чат по реакту. Холивар о фетче и аксиосе. На дворе мирно подходил к концу 2019 год...
Тимофей 🛴
один из бэкендов упал на деве, например. Или еще не готов
Самый простой вариант ловить ошибки и отдавать визависимости от ошибки результат. А вот ожидание готовности я всегда делал выше уровнем, не в апи
js2me ♨️
О, Тимофей)
Dmitry
Тимофей 🛴
О, Тимофей)
О, Сергей!)
js2me ♨️
Аксиос использует XMLHttpRequest, что говорит о поддержке IE
js2me ♨️
fetch в крупных проектах будет иметь необходимость внедрения полифила
Китикет
Я не пойму если честно в чем сложность вопроса, пишется обычная обертка request, в ней делаешь любые параметры, любые действия, вызываешь фетчи/аксиосы, делаешь чо надо с результатом, вот и все
Китикет
Фетч также имеет необходимость внедрения десятков костылей в обертку, чтобы с ним было так же удобно работать как с аксиосом, при этом кстати интерцепторов нет
Китикет
У него достаточно четкий вопрос, а ты срач axios/fetch разгоняешь
Так я ответил на этот вопрос) Или надо более конкретно знать что ему надо
Китикет
Или мне может надо готовую реализацию прямо кодом скинуть?
Тимофей 🛴
Или мне может надо готовую реализацию прямо кодом скинуть?
Я обычно молчу или задаю доп вопросы, но если у тебя желание похоливарить то кто я такой что бы тебя останавливать
Ruslan Yumakaev
Ребят, возвращаясь к теме useEffect, хочу спросить, это нормальная практика, что у меня useEffect посылает запрос к АПИ, как только компонент рендерится на странице? (в моем случае это поле для поиска). Или правильнее будет сделать вызов useEffect по кнопке поиска?
Китикет
Я обычно молчу или задаю доп вопросы, но если у тебя желание похоливарить то кто я такой что бы тебя останавливать
Тема про аксиос vs фетч к вопросу автора не относится, она просто отпочковалась и идет параллельно
Ruslan Yumakaev
Igor
debounce имхо
Китикет
Или завернуть работу с вводом в дебаунс и вызывать в юз эффект, а ввод контроллируемый)
deSilence
Мне вот интересно, между хуками и обычными компонентами, в чем наиболее разница проявляется?
Oruj
здарова) если не занят запускаю axios-запрос в самом компоненте (позже перекину его в экшены) и console.log(products) показывает как стейт заполняется продуктами, но axios-запрос постоянно запускается я пытался засунуть запрос в useEffect и продукты в deps, тоже самое
Oruj
все логично
я рад что все предсказуемо, но в чем же причина хотелось бы прояснить)
Oruj
когда делаешь запрос deps надо оставлять пустым массивом, а ответ закидывать в стейт, к примеру
ок а если я хочу чтобы запрос ничего не возвращал, а заполнял состояние в редаксе, и я выкачивал ответ из хука? const products = useSelector(state => state.products.allProducts.products);
Китикет
Обёртка над обёрткой и немного сервис воркеров
А для чего кстати сервис воркер?
Sergey
А для чего кстати сервис воркер?
Отвечать моками на реальные запросы фетча
Sheldhur
мокать отдельные запросы на деве
Китикет
Так можно просто перед запросом если условия для мока выполняются, возвращать мок, не?
Sergey
useEffect?
effector.now.sh
Sergey
А сервис воркер позволяет не менять код, но мокать
Китикет
О как интересно
Oruj
Не. Это внедрение в код
ок я не хочу лишнюю библиотеку. тогда пусть запрос и заполняет стейт и возвращает продукты
Oruj
хотя мне нужны продукты именно из стейта
Yury
ок я не хочу лишнюю библиотеку. тогда пусть запрос и заполняет стейт и возвращает продукты
Сова пытается сказать, что лишняя библиотека у тебя - это redux 😉
Sergey
ок я не хочу лишнюю библиотеку. тогда пусть запрос и заполняет стейт и возвращает продукты
Это не лишняя))) это полноценное управление логикой. То что ты сейчас делаешь это антипаттерн — смешивание логики и представления. Эффектор позволяет отделить логику и решать твои вопросы на раз два
Sergey
вот только сам реакт упрямо затягивает логику во view слой
В компонентах представления может быть логика именно самих компонентов. Бизнес-логики там быть не должно
Китикет
вот только сам реакт упрямо затягивает логику во view слой
Ну одно дело когда чувак там саму логику расписывает, а другое когда там только входная точка апи логики
Oruj
ок а вынести сетевую логику в Action файл таким образом тоже не верно?
Looch
В компонентах представления может быть логика именно самих компонентов. Бизнес-логики там быть не должно
логика для самого отображения - это да, но вот запросы/нормализация и любой другой процессинг данных пихать в компоненты нельзя,но уже ж все видели дело с запросами и кэшированием прям в рендере
Oruj
redux-thunk
ясно. я ее и хотел усвоить. спасибо ребят
Sergey
ок а вынести сетевую логику в Action файл таким образом тоже не верно?
В общем я тебе написал что делать. Выкинуть всю логику из компонентов. Взять санки или саги. Если боишься эффектора
Ilya
В общем я тебе написал что делать. Выкинуть всю логику из компонентов. Взять санки или саги. Если боишься эффектора
На правах "поддакивания" - санки, саги или RxJS в частности redux-observable (попытка не пытка, но если зайдёт много где ещё может пригодиться)
Zhanadil
через useEffect делаю get запрос, и начинается бесконечный запрос. Как можно решить эту проблему?