Edward
Хотя по идее все должно работать, просто в упор не могу понять, что не так
Rinat Valiullov
Daniil
не это то что я скинул нужно в файл js закинуть
Rinat Valiullov
Daniil
а ну тогда так
Daniil
смотри как удобнее так и делай)
Daniil
Rinat Valiullov
а ну тогда так
Спс щас проверю.
Я кстати почти добился желаемого результата без внешних файлов а—ля галп, штатными файлами. Но почти как ты догадываешься, не считается )
Daniil
ну да
Rinat Valiullov
Ну вот, то что я хотел. Спасибо ещё раз. Проверю твоё решение тоже
Daniil
там есть заморочка с тем что указав конфиг нельзя добавить опции поэтому в данном случае даже конфиг не использовался, все можно накидать через опции
const tsArgs = 'src/** --outDir dist';
Edward
Может кто то еще в состоянии мне помочь и обьяснить, почему экшн в редюсере undefined ?
Скидаю скрин ощибки, скрин компоненты и редюсера 🙏🏿
Edward
Edward
Edward
Алексей
добрый день, кто может подсказать, из-за чего ошибка
Алексей
хм, забыл про них совсем, спасибо
Алексей
Алексей
перед ? идет условие, потом первый вариант, после : идет второй вариант
Дмитрий
все выражение в фигурные возьми
Дмитрий
писал ведь уже
Алексей
тогда он ругается на второй td
Алексей
Дмитрий
так там только 1 элемент можно возвращать
Дмитрий
либо оберни в див либо в отдельный компонент вынеси
Дмитрий
но если что то я не эксперт, а только учусь
Алексей
с дивом ужасно выглядит, мне кажется, что есть вариант проще
Дмитрий
ну тогда пустой тег <>
Daniil
спасибки
вот я сделал пример в песочнице для primitive https://codesandbox.io/s/primitive-c2lkf
Olexandr
Всем привет!
Olexandr
Кто подскажет бест практис по поводу такого решения:
Внутри функционального компонента есть функция в которой изспользуется запись в useState - setValue. И тут же после такой записи мне нужно отправить ajax post запрос, в тело которого будет помещен value. В данном случае, в связи с асинхронностью - value будет хранить предыдущее состояние. Как его правильно обновить, желательно без лишнего рендера.
Sergey
Sergey
Есть хук useEffect
Sergey
Он по-моему как раз для работы с изменениями состояния какой либо переменной
Sergey
По крайне мере у меня так сделано
Olexandr
Проблема в том что этот стейт value изменяется не только в данной функции (там где axios запрос), но и в других местах.
Если использовать useEffect, и в связи записать value, то он будет отрабатывать и из-за других событий.
А мне нужно по конкретному событию, изменить состояние и отправить в БД.
Алексей
Алексей
пробовал уже
Дмитрий
реакт старый что ли?
Дмитрий
напиши тогда тег <Fragment>
Olexandr
Может я не в теме, но попробуй весь этот рендер - <> </> взять в круглые скобки
Daniil
а в чем вопрос?
Sergey
Daniil
ну после ретурна да нужны скобки если несколько строк
Olexandr
Алексей
Алексей
😃
Алексей
спасибо
Алексей
16.8
Sergey
Sofiia
Olexandr
16.8
А есть завернуть в { условие ? (первый сценарий) : (второй сценарий) }
Алексей
пробовал со скобками, не работает
Olexandr
Ну в таком случае мне кажется надо как то разграничить это дело. Раз нужна разная работа при изменении одной переменной
Если подробней, то тут окно с инпутами, при изменении инпута - переписывается свойство в value.
Отдельный компонент который занимается загрузкой картинок на сервер - возвращает (1 картинки которые остались в массиве, 2 картинки которые следует удалить, 3 новые добавленные картинки ).
Обработчик submit делает запрос на сервер с "3 новые добавленные картинки" и получает ссылки этих картинок - записывает в value, и если изначальные картинки были удалены, то записывает в value - "1 картинки которые остались в массиве".
Так вот 3 - отрабатывает сразу, т.к. работает через async промис. А вот 1 отрабатывает асинхронно.
Olexandr
useEffect непонятно что будет делать.
Sergey
Olexandr
Вот получение ссылок, отрабатывает сразу же
Olexandr
Olexandr
А вот отработка записи оставшихся картинок которая не отрабатывается сразу же
Olexandr
Daniil
Sergey
Ты принципиально не пользуешься async функциями?
Olexandr
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
Я про промисы
Sergey
Вот по этому я все таки за фетч
Olexandr
Да с этим проблем нет, await ждет получения всех ответов и в then записывает ссылки в стейт
Olexandr
console.log("Updated Product: ", productValue); - выдает уже измененный стейт
Olexandr
А
Olexandr
if (deletedImgUrls.length !== 0) {
setProductValue({...productValue, imageUrls: remainingImgUrls});
}
Sergey
Olexandr
естественно отрабатывает, но уже после перерендера
Olexandr
Olexandr
Но мне нужно получить измененный стейт и отправить его на сервер, уже обновленным.
Sergey
Да и как раз тут узеэфект