Artem
классы точно не помогут, зачем они вам?)
чтобы ctx видела та же renderSphere. потому что её в эффекте не должно быть
Artem
мб просто конекст в state записать?
он не записывается в useState
Artem
мб просто конекст в state записать?
т.е. в эффекте делал присвоение контекста setCtx(blabla.getContext('2d')) но все равно переменная ctx - undefined
Bogdan
Ты ок?
цифру горада не передал, ты же ее получишь только после того, как выполнится запрос с юзером
Anonymous
т.е. в эффекте делал присвоение контекста setCtx(blabla.getContext('2d')) но все равно переменная ctx - undefined
чет не то вы делаете 😐 у вас есть ref, который после записи в useEffect будет доступен всему компоненту
Anonymous
где нужно, там и дергайте свой ref.current.getContext
Anonymous
сейчас я накидаю пример в песочнице
вот лучше уж так, а то на постбепиан так себе
Artem
где нужно, там и дергайте свой ref.current.getContext
погодите. вы хотите сказать, что если я в эффекте создам контекст канваса. то на него так же можно будет достучаться через канвас.гетКонтекст? он не создает контекст заного? я имею ввиду вне эффекта
Alexandr
Всем привет! Кто нибудь работал c vk api? Подскажите как получить емайл юзера
Bogdan
Если у тебя другая логика, делай как надо
да какая логика?) мне нужно получить юзера, потом получиьт город и странцу по цифре, тоесть промис уже не подойдет, это же хрень выходит, запускать два запроса
Anonymous
положите просто канвас в реф, там где нужно, дергайте getContext
Anonymous
https://github.com/AveDemid/snake/blob/master/src/features/snake/components/playing-field.js#L12
Anonymous
спасибо, попробую
посмотри на 12 / 19 / 27 строку никто не запрещает дергать getContext несколько раз
Artem
посмотри на 12 / 19 / 27 строку никто не запрещает дергать getContext несколько раз
понял, вот это решение. просто именно знаний не хватало. я только сейчас понял, что он ПОЛУЧАЕТ контекст, а не создает каждый раз объект контекста. Спасибо большое.
Alexey
это называется коллективное программирование
Bogdan
В каждой новой другой ситуации опять в чат пойдешь?
зачем мне выдумывать то, что уже есть, давай расскажи, как ты все делал сам
Китикет
В каждой новой другой ситуации опять в чат пойдешь?
Например надо будет 3 запроса по очереди
Andrey
зачем мне выдумывать то, что уже есть, давай расскажи, как ты все делал сам
ну бизнес логику за тебя никто не напишет (спойлер: если немного подумать, посидеть за доками жыэс, то возможно ее можно написать самому)
Bogdan
ну бизнес логику за тебя никто не напишет (спойлер: если немного подумать, посидеть за доками жыэс, то возможно ее можно написать самому)
я не про логику спрашивал, а просто узнать пытался, как выполнить несколько запросов с использованием ридакса, я досихпор не узнал
Артём
подскажите что делаю не так, не получется данные в comments запихнуть...
Bogdan
Редакс тут не при чем на самом деле
как не причем? я знаю, что такое Promise.all, как это ридакс не причем, если я в нем хочу обработать и хочу обработать правильно
Andrey
я не про логику спрашивал, а просто узнать пытался, как выполнить несколько запросов с использованием ридакса, я досихпор не узнал
тебе уже написали, через Promise.all для более профессиональных выкрутасов с промисами есть mdn, где про это все написано
Arthur
Или миддлвары
Eugene
расскажите, как работать с токеном и expire токен, пож-та
Andrey
как не причем? я знаю, что такое Promise.all, как это ридакс не причем, если я в нем хочу обработать и хочу обработать правильно
если санки, и каждый санк надо отслеживать отдельно, пилишь 3 санка (вау) в первом пускаешь запрос, и по выполнении, запускаешь 2 остальных с любыми нужными тебе параметрами в чем тут может быть проблема?
Bogdan
если санки, и каждый санк надо отслеживать отдельно, пилишь 3 санка (вау) в первом пускаешь запрос, и по выполнении, запускаешь 2 остальных с любыми нужными тебе параметрами в чем тут может быть проблема?
const getUserInfo = () => async ( dispatch, getState, { Api }, ) => { dispatch(actions.getUser.start()) try { const res = await Api.getUser() const [user, countries, cities] = Promise.all([ dispatch(getCountries.start()) dispatch(getCities.start()) ]).then(res => dispatch(getCountries.finish(res)) dispatch(getCities.finish(res)) dispatch(actions.getUser.finish(res)) ).catch(err => dispatch(getCountries.failed(err)) dispatch(getCities.failed(err))) } catch (err) { dispatch(actions.getUser.failed(err)) } }
Andrey
const getUserInfo = () => async ( dispatch, getState, { Api }, ) => { dispatch(actions.getUser.start()) try { const res = await Api.getUser() const [user, countries, cities] = Promise.all([ dispatch(getCountries.start()) dispatch(getCities.start()) ]).then(res => dispatch(getCountries.finish(res)) dispatch(getCities.finish(res)) dispatch(actions.getUser.finish(res)) ).catch(err => dispatch(getCountries.failed(err)) dispatch(getCities.failed(err))) } catch (err) { dispatch(actions.getUser.failed(err)) } }
у меня так друг умер оберни ты все эти getCities и getCountries в санки, и дергай их с параметрами простыни из диспатчей тебе никто не советовал писать же и тебе точно надо отслеживать начало загрузки каждого ресурса?
Bogdan
штооооо
сделал по вашим советам чудесным
Bogdan
Аааай блин глазааа)))
ну чем твой пример отличается от моего?
Артём
а что в экш передаешь ? payload пустой?
если делаю начальное состояние просто массив данные рендерятся, а вот с такой структурой initState не получается...
Andrey
ну чем твой пример отличается от моего?
ну как минимум тем, что там нет мешанины await/then
Китикет
ну чем твой пример отличается от моего?
const user = await getUser({ id: 123 }) const { countryId, cityId } = user const [country, city] = await Promise.all([ getCountryById(countryId), getCityById(cityId) ])
Bogdan
const user = await getUser({ id: 123 }) const { countryId, cityId } = user const [country, city] = await Promise.all([ getCountryById(countryId), getCityById(cityId) ])
ну я это понял, зачем еще раз показывать? я не могу это сопоставить с санками, как в них должно выглядить
Andrey
ну я это понял, зачем еще раз показывать? я не могу это сопоставить с санками, как в них должно выглядить
зачем диспатчить из санка, там же можно вложенный санк вызвать, не? тогда и выглядеть будет как Time описал
Олег
Друже, есть ли смысл идти крепкому джуну в компанию, где нет наставника, с точки зрения профессионального роста и по факту главным наставником будет гугл?
Bogdan
зачем диспатчить из санка, там же можно вложенный санк вызвать, не? тогда и выглядеть будет как Time описал
ну так есть три состояния поидее start/finish/failed и нужно диспачить, что бы изменить стор в зависимости от исхода
Artem
Друже, есть ли смысл идти крепкому джуну в компанию, где нет наставника, с точки зрения профессионального роста и по факту главным наставником будет гугл?
❌ Это будет тяжело, но если есть сильный бэк, который тебе ооп и солид на примерах в вашем проекте разберёт, то смысл появится
Китикет
ну я это понял, зачем еще раз показывать? я не могу это сопоставить с санками, как в них должно выглядить
В твоем примере кстати getCountriES и getCitiES, а ты мне писал что их надо получать по айдишнику, что-то не сходится
Andrey
ну так есть три состояния поидее start/finish/failed и нужно диспачить, что бы изменить стор в зависимости от исхода
ох, я и забыл, насколько редакс ущербная штука, там же даже вложенный санк через задницу вызывается
Китикет
мне лень было писать, я накидал минимальный пример как понял
Короче не понятно к чему тебе отдельные экшны под страну и город, насколько я понял они загружаются по айдишнику, а значит нужно просто сделать 2 запроса без всяких экшнов А если нужно страны и города загрузить в стор, то у тебя неправильное разделение логики и экшн получения юзера берет на себя лишнюю работу, к тому же делает ее неправильно Циклы получения стран и городов должны быть в отдельных экшнах тогда, в которых все эти start finish failed, и они должны выдавать наружу например true / false в зависимости от того, загрузились ли данные успешно А потом можно сделать getState, достать результаты и заюзать
Seva
ты должен подгружать коменты в componentDidMount
Веталь
Порекомендуйте пожалуйста либу для валидации формы
Китикет
мне лень было писать, я накидал минимальный пример как понял
Короче делай уже под свою логику приложения, потому что мы тут не твой проект пилим, и не знаем как там и что должно работать
Артём
ты должен подгружать коменты в componentDidMount
разве в useEffect хуке это не работает?
Evgen
Seva
разве в useEffect хуке это не работает?
если честно я не работал с хуками не могу подсказать
Веталь
formik
Спасибо
Michail
Привет всем. Не кто не может объяснить: почему если я заменяю selected на &$selected, ничего не работает?
Китикет
я думаю использование промиса выглядит одинаково в любом случае
Сначала ты спрашиваешь как это должно выглядеть в редаксе, а потом "использование промиса выглядит одинаково в любом случае")
Alexey
я лучше знаю, но вы всё равно подскажите
Anonymous
что за ошибка такая странная?
Kamoliddin
Бог знает!)
Eugene
ребята, куда добавлять проверку на экспайринг токена?
Eugene
в какую часть приложения?)