Сап, мейлач. Призываются программисты 300к/наносек. Есть форма с несколькими полями, на реакте. Когда в одно поле вводится значение, на сервер уходит запрос, считает там всю хуйню и возвращает ответ, которое выводится в другое поле. И наоборот. Я реализовал это на useEffect (рис 1.). Но получилось как-то не очень визуально и захотелось переписать на useReducer чтоб было все аккуратно и вообще (рис 2.). Вдруг полей больше станет. Но тут начались проблемы: useReducer не хочет принимать нормально асинхронную функцию первым аргументом. Подскажите, как решить этот ворос?
>>246541256 (OP) На стаковерфлоу советуют обернуть dispatch в функцию, которая будет сначала отправлять запрос, а уже потом вызывать dispatch. Но тогда возникает вопрос нахуй собственно нужен этот useReducer тогда?
Еслич честно говнокод какой-то, ты простые вещи усложнил сам для себя, подписался на обновления переменной, в коллбеке обновляешь эту же переменную, из-за чего нужны условия выхода из рекурсии. JSON.parese(JSON.stringify()) - это вообще сюр. Миша все хуйня, переделывай
>>246541256 (OP) >нормально асинхронную функцию Выкидываешь говно в виде юзредюсера ставиш полноценный редакс+санк, профит Если совсем отбитый пробуй аполо
>>246543316 ну как минимум, не дрочить внутренний стейт, напиши функцию, получи данные, обнови стейт. + не делай запросы к апи внутри компонента, напиши сервис, чтоб было понятно, за что отвечает каждая строка кода, то, что ты написал понятно только тебе
>>246543395 Вместо того чтоб писать .header .search .header .logo .header .profile
Я предпочитаю давать уникальніе названия классов. .header_search .header_logo .header_profile Это дает гарантию того что у меня не возникнет элементов с классом .logo в хедере и футере одновременно. Могу еще за плюсы такого подхода рассказать
>>246543749 >платный Путаешь, есть платные фишки, но все что есть в базе тебе за глаза, тоже ебался с вашими бэмами саасами и прочей ебалой, перекатился на тайлвинд и охуел от того каким же я был дегродом
>>246544232 >обосрешься Читай доку стаковерфлоу, или сложна? Не раз сталкивался, похуй решения были причем если стилизовать классическим способом это был пиздец простыня, нахуй не вернусь на класическую стилизацию никогда чего и тебе советую
>>246544815 Мне кстати всегда интересно было. Зачем использовать всякие хранилища? Можно ведь в корневом компоненте в date создать параметр store и для него создать пустой объект и хранить все в нем. Из других компонетов обращаться к нему через $parent
>>246545004 >store и для него создать пустой объект и хранить все в не Нахуя создавать кучу хранилищ и потом ебаться с неактуальными данными? Есть сервер это единый источник правды, вот и тягай все оттуда, нахуй еще локально все держать? Аполо типа для упрощения этого
>>246544872 да любая параша на эффектах и редуктарах. Называй его хоть редаксом/эффектором/ебектором. Это всё для каличей, которые не понимают как им управлять состоянием т.к. они не программисты а фронэндеры.
У фронт эндеров есть только есть только две достойные технологии для работы с состоянием и конкурентностью, rx и async/await. И то это порты.