Edward
Хотя по идее все должно работать, просто в упор не могу понять, что не так
Daniil
не это то что я скинул нужно в файл js закинуть
Rinat Valiullov
Daniil
а ну тогда так
Daniil
смотри как удобнее так и делай)
Daniil
вот что получается
Rinat Valiullov
а ну тогда так
Спс щас проверю. Я кстати почти добился желаемого результата без внешних файлов а—ля галп, штатными файлами. Но почти как ты догадываешься, не считается )
Daniil
ну да
Rinat Valiullov
вот что получается
Ну вот, то что я хотел. Спасибо ещё раз. Проверю твоё решение тоже
Daniil
там есть заморочка с тем что указав конфиг нельзя добавить опции поэтому в данном случае даже конфиг не использовался, все можно накидать через опции const tsArgs = 'src/** --outDir dist';
Edward
Может кто то еще в состоянии мне помочь и обьяснить, почему экшн в редюсере undefined ? Скидаю скрин ощибки, скрин компоненты и редюсера 🙏🏿
Edward
Edward
Edward
Алексей
добрый день, кто может подсказать, из-за чего ошибка
Дмитрий
добрый день, кто может подсказать, из-за чего ошибка
используй тернарное выражение вместо иф и возьми его в фигурные скобки
Dastan
добрый день, кто может подсказать, из-за чего ошибка
Между key={} не должно быть пробелов. И если используете if , то нужен return. Но лучше юзать тернарный оператор
Алексей
хм, забыл про них совсем, спасибо
Алексей
что я делаю не так?
Алексей
перед ? идет условие, потом первый вариант, после : идет второй вариант
Дмитрий
все выражение в фигурные возьми
Дмитрий
писал ведь уже
Алексей
тогда он ругается на второй td
Алексей
Дмитрий
так там только 1 элемент можно возвращать
Дмитрий
либо оберни в див либо в отдельный компонент вынеси
Дмитрий
но если что то я не эксперт, а только учусь
Алексей
с дивом ужасно выглядит, мне кажется, что есть вариант проще
Дмитрий
ну тогда пустой тег <>
Daniil
спасибки
вот я сделал пример в песочнице для primitive https://codesandbox.io/s/primitive-c2lkf
Olexandr
Всем привет!
Olexandr
Кто подскажет бест практис по поводу такого решения: Внутри функционального компонента есть функция в которой изспользуется запись в useState - setValue. И тут же после такой записи мне нужно отправить ajax post запрос, в тело которого будет помещен value. В данном случае, в связи с асинхронностью - value будет хранить предыдущее состояние. Как его правильно обновить, желательно без лишнего рендера.
Olexandr
Во первых почему ajax а не fetch. Во вторых хуки применяешь?
да, хук useState (в данном случае), с запросом проблем нет, использую axios
Sergey
Есть хук useEffect
Sergey
Он по-моему как раз для работы с изменениями состояния какой либо переменной
Sergey
По крайне мере у меня так сделано
Olexandr
Проблема в том что этот стейт value изменяется не только в данной функции (там где axios запрос), но и в других местах. Если использовать useEffect, и в связи записать value, то он будет отрабатывать и из-за других событий. А мне нужно по конкретному событию, изменить состояние и отправить в БД.
Алексей
пробовал уже
Дмитрий
реакт старый что ли?
Дмитрий
напиши тогда тег <Fragment>
Olexandr
Может я не в теме, но попробуй весь этот рендер - <> </> взять в круглые скобки
Daniil
а в чем вопрос?
Daniil
ну после ретурна да нужны скобки если несколько строк
Olexandr
Через редакс работаешь?
в данном случае нет.
Алексей
напиши тогда тег <Fragment>
капец, с полным заработало
Алексей
😃
Алексей
спасибо
Olexandr
капец, с полным заработало
может старый реакт? ) У меня в проекте все фрагменты в <></> - работают
Алексей
16.8
Olexandr
16.8
А есть завернуть в { условие ? (первый сценарий) : (второй сценарий) }
Алексей
пробовал со скобками, не работает
Olexandr
Ну в таком случае мне кажется надо как то разграничить это дело. Раз нужна разная работа при изменении одной переменной
Если подробней, то тут окно с инпутами, при изменении инпута - переписывается свойство в value. Отдельный компонент который занимается загрузкой картинок на сервер - возвращает (1 картинки которые остались в массиве, 2 картинки которые следует удалить, 3 новые добавленные картинки ). Обработчик submit делает запрос на сервер с "3 новые добавленные картинки" и получает ссылки этих картинок - записывает в value, и если изначальные картинки были удалены, то записывает в value - "1 картинки которые остались в массиве". Так вот 3 - отрабатывает сразу, т.к. работает через async промис. А вот 1 отрабатывает асинхронно.
Olexandr
useEffect непонятно что будет делать.
Olexandr
Вот получение ссылок, отрабатывает сразу же
Olexandr
Olexandr
А вот отработка записи оставшихся картинок которая не отрабатывается сразу же
Olexandr
Daniil
что я делаю не так?
можешь текстом кинуть
Sergey
Ты принципиально не пользуешься async функциями?
Olexandr
const submitHandler = async () => { if (data !== null) { console.log("PRODUCT _id:", data._id, "VALUE: ", productValue) } else { console.log("NEW PRODUCT: ", productValue); } if (deletedImgUrls.length !== 0) { setProductValue({...productValue, imageUrls: remainingImgUrls}); } if (addedImgFiles.length !== 0) { const uploadResult = UploadApiAxios(addedImgFiles); await axios .all(uploadResult).then(response => { console.log("inside: ", response); const newUrls = productValue.imageUrls; response.forEach(item => { newUrls.push(item.data.url); }); setProductValue({...productValue, imageUrls: newUrls}) }) .catch(error => { console.log(error); }); } console.log("Images: ", remainingImgUrls); console.log("Deleted urls: ", deletedImgUrls); console.log("Added Files:", addedImgFiles); console.log("Updated Product: ", productValue); onClose(); };
Sergey
Я про промисы
Olexandr
Я про промисы
await axios - это и есть промис
Sergey
Вот по этому я все таки за фетч
Olexandr
Да с этим проблем нет, await ждет получения всех ответов и в then записывает ссылки в стейт
Olexandr
console.log("Updated Product: ", productValue); - выдает уже измененный стейт
Olexandr
А
Olexandr
if (deletedImgUrls.length !== 0) { setProductValue({...productValue, imageUrls: remainingImgUrls}); }
Olexandr
естественно отрабатывает, но уже после перерендера
Olexandr
Но мне нужно получить измененный стейт и отправить его на сервер, уже обновленным.
Sergey
Да и как раз тут узеэфект