No video

11 - React + TypeScript / Типизируем ВСЁ / React JS - Путь Самурая 2.0

  Рет қаралды 23,970

IT-KAMASUTRA

IT-KAMASUTRA

Күн бұрын

it-incubator.i... - человекоориентированное, честное и профессиональное обучение front-end и back-end разработке гарантированно до трудоустройства за фиксированную стоимость.
Поддержать меня можно на patreon / itkamasutra или оформив спонсорство на данном канале.
Ребят, применил TS ко всему проекту. Фууух... React+TS Task completed! психолошический барьер пройден. Ждите новых вкусняшек!!!
Спасибо всем за поддержку! Надеюсь у всех всё получилось, а если нет... забирайте контент с репозитория.
Вы красавчики, самураи! Я вами горжусь! Спасибо за поддержку! Летим в космос вместе!
Поддержать проект монеткой: social-network...
Платное обучение в онлайн или оффлайн инкубаторе:
it-incubator.eu
it-kamasutra.com
А здесь бесплатная взаимопомощь:
t.me/reactjs_s...
* Мы в соц. сетях:
itkamas...
/ itkamasutra
telegram.me/it...
* Мои личные VK и Insta:
d.kuzyu...
/ it.kamasutra.dimych
#reactJS #typescript #практика #примеры #уроки #курс
Удачи нам, друзья!

Пікірлер: 205
@ITKAMASUTRA
@ITKAMASUTRA 4 жыл бұрын
Ребят, применил TS ко всему проекту. Фууух... React+TS Task completed! Психологический барьер пройден. Ждите новых вкусняшек!!! Спасибо за донаты, спонсорство и подписку на АПИ! 🚀🤟
@user-ln4do8bv9c
@user-ln4do8bv9c 4 жыл бұрын
Скинь пожалуйста ссылку на "трёхуровневый метод Димыча для обучения", про который ты рассказывал в одном из своих видео
@pivand8648
@pivand8648 4 жыл бұрын
Куда написать чтобы получить ответы по обучению?
@aleksandrpushnin2244
@aleksandrpushnin2244 4 жыл бұрын
Димыч когда будут новые видео?)
@tazalov
@tazalov Жыл бұрын
все круто, да только не везде явно типизировали connect, если бы типизировали везде, все бы легло) есть единственное место, где не типизировали connect и именно там все ляжет)
@uzver3787
@uzver3787 3 жыл бұрын
00:22:05 event PromiseRejectionEvent(catchAllUnhandledErrors) 00:24:26 App props 00:26:00 compose, mapStateToPropsType 00:29:20 compose,тип ComponentType 00:31:11 WithSuspense HOC(generic) 00:34:14 WithAuthRedirect HOC(generic) 00:52:00 Bag(userPhoto) 00:53:50 User 00:57:55 AddPostForm 01:06:20 My Posts 01:12:07 Profile Info 01:16:25 Todo:) 01:20:20 Object.keys for ContactType 01:23:45 ProfileDataForm 01:31:15 ProfileContainer 01:37:30 Ctrl+alt+v (отдельные типы) 01:42:00 Типизируем Map и Dispatch для connect(Post Container) 01:46:40 Post 01:49:10 О выведении типа для mapStateToProps 01:51:20 Status 01:58:25 Navbar, Header 02:05:49 Messages, Paginator 02:13:42 Plans for the future...
@grigoralex406
@grigoralex406 2 жыл бұрын
Крутая идея!
@maxim.saharov
@maxim.saharov 2 жыл бұрын
круто спасибо, только если не сложно исправь HOK на HOC
@darjat.1069
@darjat.1069 3 жыл бұрын
Димыч, спасибо тебе огромное! Нашла работу, правда не React, а Vue разработчиком. Однако освоить Vue после твоих курсов было совсем несложно. Мне 30, у меня гуманитарное образование, я училась почти полтора года (с большими перерывами и борьбой с прокрастинацией) и искала работу два месяца. Училась на твоих курсах, ну и каких-то ещё бесплатных видюшках в интернете. Хочу сказать, что всё можно, если не сдаваться. Дерзайте, ребята! И тебе ещё раз огромное спасибо, Димыч, за то, что делаешь сложные вещи простыми. ❤️❤️❤️
@mariiatkachova570
@mariiatkachova570 3 жыл бұрын
Молодец!!! У меня такая же ситуация была!
@SohoCode
@SohoCode Жыл бұрын
как дела сейчас?
@user-uu4gp9et2s
@user-uu4gp9et2s 4 жыл бұрын
Ты в конце жизни попадешь в рай, или в историю. Спасибо, лучший формат и подача и информация
@sergeypetrov7005
@sergeypetrov7005 4 жыл бұрын
Привет Димыч. Хочу сказать тебе огромное спасибо за твою деятельность. Прошел твой курс React+Redux путь самурая v.1 и начал искать работу. В итоге на первом же собесе предложили оффер на позицию Junior. Всем ребятам советую не мчаться на платные курсы, а постараться самим вникнуть во все аспекты и идти, и еще раз идти на собесы. Только ваше желание и самостоятельное обучение даст максимальные результаты!
@user-uk2hh8vy9e
@user-uk2hh8vy9e 4 жыл бұрын
а подскажи, в каком городе искал? а то у нас с этим карантином вообще ноль вакансий)
@sergeypetrov7005
@sergeypetrov7005 4 жыл бұрын
@@user-uk2hh8vy9e Россия, Томск) У нас карантин никак не повлиял, просто перешли на удаленку
@linuxlifepage
@linuxlifepage 4 жыл бұрын
Привет расскажи что на собеседовании спрашивали. Тебе видимо круто повезло, либо бэкграунд хороший (правда?)?
@user-uk2hh8vy9e
@user-uk2hh8vy9e 4 жыл бұрын
@@sergeypetrov7005 понял, спасибо) удачи тебе и роста!:)
@user-cm3qb6jo7d
@user-cm3qb6jo7d 4 жыл бұрын
Надеюсь следующий плейлист будет называться "Нейросети кабзда как просто")
@maxim.saharov
@maxim.saharov 2 жыл бұрын
и длиться 6 часов каждый урок)
@visokogroup7922
@visokogroup7922 4 жыл бұрын
Ураа, я очень ждал этот день!)) и наконец-то, новая серия Игры престолов продолжается))) TypeScript мощный, но сложный... Спасибо, за твой адовый труд!
@ITKAMASUTRA
@ITKAMASUTRA 4 жыл бұрын
:))) Спасибо за поддержку!🙋🏻‍♂️
@LNMaster_
@LNMaster_ 4 жыл бұрын
Это титанический труд, что-то объяснять и одновременно писать код, сам по себе знаю. Однозначно лайк за старания.
@ggtv1964
@ggtv1964 4 жыл бұрын
Разговаривают двое Хакеров, один другому: Знаешь как взломать Банкомат? Второй:Нет, как? Первый:Берешь кувалду, берешь Ноутбук, подходишь и разбиваешь банкомат кувалдой и бери что хочешь. Второй: А зачем ноутбук? Первый: Ну какой ты Хакер без ноутбука
@user-ku2cf7dw4t
@user-ku2cf7dw4t 3 жыл бұрын
Уееее!!! Начал с видео TypeScript месяца три назад, но все не доходили руки закончить. У меня сегодня такое же чувство, когда закончил огромный кусок работы. Тема была тяжелая. Димыч как всегда спасибо. Все супер. Вижу ты ты устал тянуть уже эту серию. Чувствую до соточки не доберемся;)
@user-pb3yt3bo9u
@user-pb3yt3bo9u 3 жыл бұрын
Вместо Obj.keys использовал такую конструкцию const getContacts = (contacts: ContactsType) => { return Object.entries(contacts).map(contact => { let [contactName, contactValueText] = contact if (contactName) { return ( {contactName}: {contactValueText} ) } return false }) }
@dm-vg3vx
@dm-vg3vx 3 жыл бұрын
Каждый раз кайфую с песенки в начале :D В самурае 1.0 клевая, но эта еще круче. У тебя музыкальный талант, Димыч!
@marina-ej4qd9kc1wh
@marina-ej4qd9kc1wh 7 ай бұрын
Ооооох. Тяжело было, Димыч, спасибо за видео про TypeScript. Ты мегамозг
@sandorkligan2208
@sandorkligan2208 3 ай бұрын
Спасибо Димыч! Ты великолепен!
@maxim.saharov
@maxim.saharov 2 жыл бұрын
фух, ура! Наконец то закончился этот бесконечный урок) я его наверно больше двух дней проходил - так как Димыч не сильно стал разжевывать и приходится по ходу самому учить TS (так как второй сезон уже для мидлов типо, а сейчас и джунам нужно знать все что и мидлам)). И многое уже не так как у Димыча в видео сейчас - технологии меняются каждый месяц), поэтому приходится все делать как у Димыча только на новых технологиях. У кого не получаться что то прошу в мой репо.
@maxim.saharov
@maxim.saharov 2 жыл бұрын
01:57:40 - Димыч позывает что не работает переход на профиль и что бы себя показывало. Я там больше, чем пол дня долбался и додолбился до идеальной работы) показывает профиль авторизированного пользователя и когда руками ссылку вбил то тоже показывает, как нужно, тоже можно увидеть в моем репо или в репо в файле News есть ссылка уже на выложенный сайт на гитхабе.
@maxim.saharov
@maxim.saharov 2 жыл бұрын
maxim-saharov - назв. гитхаба и ReactKamasutra назв. Проекта
@maxim.saharov
@maxim.saharov 2 жыл бұрын
Буду очень рад за поставленные звездочки в нем и приятного обучения самураям)
@spacerider9426
@spacerider9426 3 жыл бұрын
TypeScript, React, Redux, типизация. Сэнсэй, спасибо за твой труд! Смотрю дальше!
@aleksandrglebik8033
@aleksandrglebik8033 2 жыл бұрын
Димыч, Ты просто красавчик! React + TypeScript / Типизируем ВСЁ / React JS
@user-wr3dz2op1t
@user-wr3dz2op1t 9 ай бұрын
Летим !
@user-vj8hj9jk2b
@user-vj8hj9jk2b Жыл бұрын
Димычу респект. Закреплены знания по TS for react components, connect, reduxForm, HOCs, redux redusers and actions. Маленькое примечание по видео: для React.memo() необязательно создавать новую компоненту и ее экспортировать, а сделать сразу: export default React.memo(Component)
@user-bx7rm2rp9g
@user-bx7rm2rp9g 4 жыл бұрын
Димыч, спасибо за твой труд! Респект!
@user-jj9pm4zz2p
@user-jj9pm4zz2p 4 жыл бұрын
огромное спасибо за уроки!
@ITKAMASUTRA
@ITKAMASUTRA 4 жыл бұрын
🚀👍 на здоровье!
@mariiatkachova570
@mariiatkachova570 3 жыл бұрын
React + TypeScript -> Cпасибо Димыч !
@user-vd3pn5if1k
@user-vd3pn5if1k 4 жыл бұрын
Димыч большое тебе спасибо! Ты человек с большой буквы, Здоровя тебе!
@VasylBatih
@VasylBatih 3 жыл бұрын
Курс пушка, прошел 1.0 в то время как на работе сказали что будем переходить на реакт, очень помогло, но с 2.0 все както заплутанее, очень хаотичен код и + переход на TS, + если пишите как я немного по своему и не точь в точь за Дмитрием, то будет еще сложнее переводите ето все в ТС, было бы хорошо както структурировать ето все без обид, лично мое мнение Путь самурая! Вперед!)Летим! upd: и лучше как минимум разнести компоненты по отдельным файлам/папкам, т.к. сейчас присутствуют файлы с 2 и более компонентами
@anthony_fed
@anthony_fed 2 жыл бұрын
Димыч, огромное тебе спасибо!!! Нашел работу))) твой курс очень сильно помог !!! Останавливаться не буду) буду дальше бомбить твой курс!!!!
@artsemvilchuk9037
@artsemvilchuk9037 4 жыл бұрын
Ого! Димыч в воскресенье даже видосики выкладывает! Как сказали уже в комментах "новая серия игры престолов вышла!" :) Спасибо!
@user-dz8gp1ls9z
@user-dz8gp1ls9z 3 жыл бұрын
Спасибо большое за курс! React+TS ❤️
@johnunderwood4904
@johnunderwood4904 Жыл бұрын
@Aimner Нашёл решение ошибки: "Type 'WCP' is not assignable to type 'IntrinsicAttributes'." Пишем export function withAuthRedirect и ошибка пропадает.
@marina-ej4qd9kc1wh
@marina-ej4qd9kc1wh 7 ай бұрын
ты крут!
@user-wd3tl2rx9p
@user-wd3tl2rx9p Жыл бұрын
Димыч, спасибо) 00:22:05 event PromiseRejectionEvent(catchAllUnhandledErrors) 00:24:26 App props 00:26:00 compose, mapStateToPropsType 00:29:20 compose,тип ComponentType 00:31:11 WithSuspense HOC(generic) 00:34:14 WithAuthRedirect HOC(generic) 00:52:00 Bag(userPhoto) 00:53:50 User 00:57:55 AddPostForm 01:06:20 My Posts 01:12:07 Profile Info 01:16:25 Todo:) 01:20:20 Object.keys for ContactType 01:23:45 ProfileDataForm 01:31:15 ProfileContainer 01:37:30 Ctrl+alt+v (отдельные типы) 01:42:00 Типизируем Map и Dispatch для connect(Post Container) 01:46:40 Post 01:49:10 О выведении типа для mapStateToProps 01:51:20 Status 01:58:25 Navbar, Header 02:05:49 Messages, Paginator 02:13:42 Plans for the future..
@joburn4144
@joburn4144 4 жыл бұрын
Спасибо большое за ценные уроки! Очень полезные записи. Прикольно, что у ребят, которые рассказывают о работе фронта React + Typescript, а главный сайт - это криво свёрстанный на конструкторе франкенштейн)) даже не знаю как это объяснить
@n0escape
@n0escape 11 ай бұрын
Обновление 5: для типизации тестов (решение ошибки, где мы инициализируем компоненты): чтобы решить проблему с недостатком параметров, можем сказать что параметры которые не нужны в типизации самой компоненты указываем например : currentPage?: number также мы указываем стандартные значения в пропсах компоненты: const Paginator: Reac.FC = ({ ..., currentPage = 1 onPageChanged= x => x }) => {...}
@user-pc9bl7uf1l
@user-pc9bl7uf1l 3 жыл бұрын
Я на 47 минуте - мозг говорит тебе спасибо и выключается ))))
@Ta1mse
@Ta1mse Жыл бұрын
Всем доброго времени суток ,кто-нибудь знает решение проблемы с RouteComponentProps в 6 версии router-dom?
@progi2409
@progi2409 Жыл бұрын
много времени конечно прошло но может нашел решение? я уже второй день мучаюсь все перепробовал ничего не помогает
@user-ij9qf9yx8z
@user-ij9qf9yx8z Жыл бұрын
Тоже не понимаю
@n0escape
@n0escape 11 ай бұрын
В версиях 'react-router-dom' 6 и выше RouteComponentProps был заменен на RouteProps. поидеи работатет так же
@n0escape
@n0escape 11 ай бұрын
@@progi2409 пнул ответ если надо еще
@n0escape
@n0escape 11 ай бұрын
@@user-ij9qf9yx8z пнул ответ если надо еще
@TheGena888
@TheGena888 3 жыл бұрын
56:45 сгорел от того что не слышу димыча из за охлаждения ноутбука - сходил за наушниками, надел. димыч поправил микрофон. победитель.
@Edvard-Aliev
@Edvard-Aliev 4 жыл бұрын
Спасибо мужик! Еще не дошел до этого, но видео посмотрел) круто!
@lelkamod
@lelkamod 4 жыл бұрын
Димыч, спасибо за очередной урок! Вместе с тобой переписала все на TS. Очень жду продолжения!
@alessarver
@alessarver 4 жыл бұрын
Спасибо большое за уроки))) Посмотрела все видео + начала писать свой проект на реакте. Откликалась на разные акансии по реакту в своем городе и втом, который недалеко. Пока не прошла ни одного собеседования(их было 2). Результаты еще 1 пока неизветны, а на другие собесы не попала. У кого-нибудь было такое же ужасное чуство из-за которого хочется сказать себе: "Возможно, это не мое". Очень много учу программирование ежедневно больше полугода(реакт начала учить около 2 мес назад).
@ITKAMASUTRA
@ITKAMASUTRA 4 жыл бұрын
Полгода - мало! 10 собесов проваленных первых - это норма!! Лети , не сдавайся!!!✊
@erbolkenjebekov7701
@erbolkenjebekov7701 Жыл бұрын
export function withAuthRedirect(WrappedComponent: React.ComponentType) помогло
@yuritian8830
@yuritian8830 Жыл бұрын
Мне тоже помогло
@originalhrysha1976
@originalhrysha1976 4 жыл бұрын
Отличный контент!!
@ITKAMASUTRA
@ITKAMASUTRA 4 жыл бұрын
Спасибо
@portador-portador
@portador-portador 2 жыл бұрын
Вроде не увидел в комментах. Нашел такие варианты типизацмм 1. Для контейнерных компонент: - создаем переменную connector: code: /// const connector = connect(mapStateToProps, mapDispatchToProps) - получаем тип пропсов, которые приходят в компоненту: code: /// type ConnectorProps = ConnectedProps 2. Типизация withSuspense для arrow function: code: /// const withSuspense = (WrappedComponent: React.ComponentType) =>
@user-dg5js1if7c
@user-dg5js1if7c 3 жыл бұрын
Определение типа ключей для полей формы можно выполнять прямо в самом createField. export function createField(placeholder: string | undefined, name:(Extract), component: FC, text: string, validate: Validator | Validator[] | null, props: any = {}) {
@user-vd2xq1lx9x
@user-vd2xq1lx9x 16 күн бұрын
React + TypeScript / Типизируем ВСЁ / React JS
@alira2924
@alira2924 3 жыл бұрын
огромное спасибо! React+TS Task completed!
@malifor
@malifor 3 жыл бұрын
Вот нормальный рабочий вариант withAuthRedirect C таким вариантом в app.ts ничего менять не надо все итак работает как надо и suspense отлично подгружается let mapStateToPropsForRedirect = (state: AppStateType) => ({ isAuth: state.auth.isAuth }) type MapStatePropsType = ReturnType export const withAuthRedirect = (Component: ComponentType) => { class RedirectComponent extends React.Component { render() { if (!this.props.isAuth ) return ; return } } return connect(mapStateToPropsForRedirect)(RedirectComponent); }
@n0escape
@n0escape 11 ай бұрын
Спустя примерно 20 мин видео и 6 часов дебага я хотел сломать ноут разбить окно, и прокричать что я думаю о всех тех кто придумал эти все структуры и про програмирование в целом... Продолжение коммента 1: типизируем Хоки (папка hoc) Для начала типизации хоков, типизируем сначала места, где их используем (компоненты) Часто выскакивает ошибка в compose, ее следует типизировать сказав compose(...)(...) Для типизации хоков: если приходит компонент то его тип React.ComponentType При типизации хоков поменялась структура теперь это не стрелочкая функция: WCP - пропсы приходящего компонента export function withSuspense(WrappedComponent: React.ComponentType) { return (props: WCP) => { ... } } При типизации хока withAuth мы добавляли в пропсы isAuth из mapState... но нам не надо их передавать дальше поэтому деструктуризируем пропсы забирая isAuth а остатки передаем дальше let {isAuth, ...restProps} = props На этом этапе с толкнулся с проблемой, что у меня происходит анализ id профиля из url и который в props. Проблем было много, но если хотите чтобы редирект с профиля был только при попытке открыть свой профиль и иметь возможность просматривать другие профили, используйте этот (скорее всего гвоно) код let mapStateToPropsForRedirect = (state: appStateType) => ({ isAuth: state.auth.isAuth }) type mapStatePropsType = ReturnType & routerPropsType type routerPropsType = { router: { params: { userId: number } } } // // если авторизирован - то отображаем компоненту // // если не авторизирован и нет данных пользователя (props.router) - логинизация // // если не авторизирован и нет юсер айди - то на логиниацию // // если не автооризирован но есть юсер айди - то отображаем компоненту (скорее всего это профиль) // // используем только в компонентах, которые хотим защитить авторизацией export const withAuthRedirect = (Component: React.ComponentType) => { const RedirectComponent = (props: mapStatePropsType) => { if (props.isAuth ) { return }else if(!props.isAuth && !props.router){ return }else { if(!props.isAuth && !props.router.params.userId){ return } else { if(!props.isAuth && props.router.params.userId) return } } } return connect(mapStateToPropsForRedirect)(RedirectComponent); }
@user-dp8xc9tx8n
@user-dp8xc9tx8n 4 жыл бұрын
Ты даёшь бро. Знаешь как мотивировать и обучать
@antonmaklakov
@antonmaklakov 4 жыл бұрын
Поздравляю с 60к подписчиками!🎂🎂🎂
@klick998
@klick998 4 жыл бұрын
Только сейчас понял. Капец ты мне Леонида Бараца напоминаешь из "Квартет И". В хорошем смысле, конечно же) Reacr TypeScript Redux. Спасибо за материал!
@ruslanla4654
@ruslanla4654 3 жыл бұрын
React TypeScript Большая типизация! Димыч Спасибо
@user-iq3fs8ey7l
@user-iq3fs8ey7l Жыл бұрын
#reactJS #typescript #практика #примеры #уроки #курс
@n0escape
@n0escape 11 ай бұрын
Обновление 4: Столкнулся с проблемой версии react-router-dom v6 и выше. Проблема в импорте RouteComponentProps В версиях 'react-router-dom' 6 и выше RouteComponentProps был удален. Чтобы протипизировать данные url пришедшие из withRouter я типизировал так: type withRouterProps = { router: { location: Location; navigate: NavigateFunction; params: Record; }; } Если кому надо, вот моя вариация withRoouter, которой я оборачиваю profile import { useLocation, useNavigate, useParams } from "react-router-dom"; // wrapper to use react router's v6 hooks in class component(to use HOC pattern, like in router v5) export function withRouter (Component: React.ComponentType) { return (props: WCP) => { let location = useLocation(); let navigate = useNavigate(); let params = useParams(); return ( ); } }
@Alexander-jf6ls
@Alexander-jf6ls 10 ай бұрын
Еще хотел добавить вместо params: Record использовать params: Record тогда userId будет типизирован
@daniilpautkin
@daniilpautkin 4 жыл бұрын
Димыч! Уже Июль, оживай, пожалуйста)
@aswonder5569
@aswonder5569 4 жыл бұрын
Спасибо за превосходные лекции. Осталась недоделанная типизация Можно было бы сделать поиск по файлам проекта по ключевому слову "any". 1. В UsersReducer._followUnfollowFlow так и нет типа для параметра apiMethod. Я тоже не смог ничего придумать. 2. object-helper недоделан. Я его сделал так: type PropertyValueType = number // можно расширить. У нас пока userId:number type IndexableObjectType = {[item: string]:PropertyValueType} export function updateObjectInArray(itemsArray:Array, propValue:PropertyValueType, propName:string, newObjProps: any) { return itemsArray.map((item) => { return (item[propName] === propValue) ? { ...item, ...newObjProps } : item; }); } но чувствую, что это говнокод. P.S. Почти всю типизацию добил уже на 1:37:00, но осталась ошибка в ProfileContainer, с которой совладать не могу :-( - Argument of type xxx is not assignable to parameter of type 'MapDispatchToPropsNonObject'.
@olehivanytskyi70
@olehivanytskyi70 3 жыл бұрын
2. Можливо написати так export const updateObjectInArray = (arr: Array, value: T[K], key: K, newObjProps: P):Array => arr.map(obj => obj[key] === value ? {...obj, ...newObjProps} : obj); й використовувати updateObjectInArray(state.users, action.userId, "id", {followed: true})
@kurtmiller77
@kurtmiller77 4 жыл бұрын
Димыч, с тайпскриптом сразу видны косяки на проекте, то импорт не оттуда, то скобки не там, то еще всякая фигня и как оно только до этого нормально работало? )
@olegkrugliansky1660
@olegkrugliansky1660 4 жыл бұрын
Димыч, я еще на пути самурая 1.0, но хочу чтобы ты поглядзел мое сообщение и немного порадовался! Димыч, буду вас догонять, сейчас на 45 видео, еще чуть-чуть и прямо в космос, спасибо за то, что ты есть, я хочу от тебя детей
@otto-vector
@otto-vector 2 жыл бұрын
протайкскрипил проект ещё несколько уроков назад, думал просто посмотрю, оказалось ещё рефакторинга на два дня :)
@user-ei5zp2qi4j
@user-ei5zp2qi4j 3 жыл бұрын
Спасибо, Димыч ты крут
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Все перемещения файлов начались с 57:24, когда мы начали использовать typescript в папке Post
@progi2409
@progi2409 Жыл бұрын
TS2305: Module '"react-router-dom"' has no exported member 'RouteComponentProps'. может кто-то нашел решение этой проблемы?
@farbovaniylis315
@farbovaniylis315 Жыл бұрын
Получилось решить?
@n0escape
@n0escape 11 ай бұрын
В версиях 'react-router-dom' 6 и выше RouteComponentProps был заменен на RouteProps. поидеи работатет так же
@n0escape
@n0escape 11 ай бұрын
@@farbovaniylis315 пнул ответ (если еще надо)
@mykhailostepanishchev6472
@mykhailostepanishchev6472 3 жыл бұрын
фух,оч круто,спасибо.
@yuritian8830
@yuritian8830 Жыл бұрын
Если выдает ошибку с ChangeEvent просто пропишите её примерно вот так import React, { ChangeEvent, useEffect, useState } from "react";
@yuliyakurilchik3676
@yuliyakurilchik3676 2 жыл бұрын
RouteComponentProps. Кто нибудь знает чем можно заменить его, не переписывая классовую компоненту в функциональную? в 6 версии react-router-dom больше нет его
@user-np9mq5xc7j
@user-np9mq5xc7j 2 жыл бұрын
Была та же проблема. Сделал так const params = useParams(); const id = params.id
@yuliyakurilchik3676
@yuliyakurilchik3676 2 жыл бұрын
@@user-np9mq5xc7j пока осталась висеть ошибка "Module '"react-router-dom"' has no exported member 'RouteComponentProps'", но почему-то приложение перестало из-за нее крашится. Так что, пока что, я так и оставила. Но в дальнейшем, кроме как переписывания классовой на функциональную с хуками, - других вариантов и нет
@user-np9mq5xc7j
@user-np9mq5xc7j 2 жыл бұрын
Скажите пожалуйста ошибка вызванная Promise у вас пофиксилась как у Димыча или нет? Просто у меня не получается. Я вижу пока единственный выход не писать then вообще в UI и вынести эту логику в BLL. НО еще думаю
@yuliyakurilchik3676
@yuliyakurilchik3676 2 жыл бұрын
@@user-np9mq5xc7j Да, всё пофиксилось точно так же как у Димыча
@user-bl4dl9ke7b
@user-bl4dl9ke7b 2 жыл бұрын
Спасибо
@user-qz4mq5tc8e
@user-qz4mq5tc8e 3 жыл бұрын
30:49 Типизация withAuthRedirect урок 69 в Самурае 1
@MrSvent0vit
@MrSvent0vit 4 жыл бұрын
Урааа! ))
@primatch777
@primatch777 4 жыл бұрын
Димыч, не задумывался, что Камасутра - это Индия, а самураи - то японская темка))) надо было назвать чем то типа "Путь в тайпскриптовую нирвану")) (чисто новые шутке, не воспринимайте всерьез).
@Abdul-hy4cy
@Abdul-hy4cy Жыл бұрын
Димыч лучший !
@feenthusiast
@feenthusiast 3 жыл бұрын
30:05 можно просто withAuthRedirect выше чем connect поставить.
@shsh01212
@shsh01212 3 жыл бұрын
Жестко брат, но я дойду до конца и зарефакторю
@user-ls1yq8ti9t
@user-ls1yq8ti9t 4 жыл бұрын
Круто!
@StepanVorobiov
@StepanVorobiov 4 жыл бұрын
было б круто выпуск про серверный рендеринг на react
@user-ij9qf9yx8z
@user-ij9qf9yx8z Жыл бұрын
Эх дим димыч, перестал ты тщательно объяснять, а ведь это твоя фишка была( Знаю что на 2 части мы многое сами должны делать, но TS это сложная штука, без повторений и подробностей не пройти
@user-fu6vi1te3i
@user-fu6vi1te3i Жыл бұрын
Лично мне помогает ChatGPT со всеми вопросами, так что советую его освоить так сказать. А что касается курса по TS, то как по мне половина видосов по TS неактуальна, так как начал использоваться Redux-toolkit, и вот в нем например не надо явно типизировать Action-creator-ы к примеру. Также появилось много разных дженериков созданных уже библиотеками к примеру AxiosInstance, AxiosResponse в API которые используются, + благодарся toolkit есть createAsyncThunk, который оч помогает в типизации "Танков" и т.д. Да и редакс-форм никто не использует, есть формик, который типизируется двумя строками кода вместо миллиона. Много чего изменилось, поэтому только на Димыча рассчитывать не приходится.
@Abdul-hy4cy
@Abdul-hy4cy Жыл бұрын
Димыч красава !
@kurtmiller77
@kurtmiller77 4 жыл бұрын
1:59:49 HeaderContainer из классовой в функциональную бы 2:05:14 Весьма частая ошибка, когда типы не совпадают, происхоодит как бы двойная работа - сначала описываем типы в стэйтах редакса, затем типы пропсов.Может быть есть решение, чтобы возвращать истинный тип из стейта редакса?
@user-hb4vr5gq4u
@user-hb4vr5gq4u 4 жыл бұрын
мляяя!!!! ну пушка!!!! я ещё на 57 уроке первого сезона. но захожу сюда чтобы послушать песенку!!! Взлетаеееем! коничива, самурай, коничива....!!!
@Abdul-hy4cy
@Abdul-hy4cy Жыл бұрын
React + TypeScript
@VladislavAxt
@VladislavAxt 3 жыл бұрын
Пристегнитесь! Мы взлетаем!
@Karifax
@Karifax Жыл бұрын
Была ошибка на пропс pageTitle в App.tsx, решил тем что поменял типизацию compose в UserContainer на
@yuritian8830
@yuritian8830 Жыл бұрын
Три рабочих дня ушло чтобы понять и пофиксить все баги. Это было прекрааааасно!!!
@marina-ej4qd9kc1wh
@marina-ej4qd9kc1wh 7 ай бұрын
завидую, что тебе это понравилось
@yuritian8830
@yuritian8830 7 ай бұрын
@@marina-ej4qd9kc1wh почему?
@marina-ej4qd9kc1wh
@marina-ej4qd9kc1wh 7 ай бұрын
Ну, мне было скучновато на этом этапе. И я такая подумала, блин, может не мое все это. Хотя камасутру 1.0 с таким удовольствием учила.
@yuritian8830
@yuritian8830 7 ай бұрын
@@marina-ej4qd9kc1wh не обязательно, что не ваше. Возможно посмотреть видеоуроки других. А вообще нужно отсекаться от видеоуроков и переходить на прямую к документации. Видеоуроки это как быстрый старт, которые дают общее представление об изучаемом. Да и мотивации будет больше, после изученного пунтка документации будет больше, включая растущую уверенность в себе. Потому как если сидеть только на видеоуроках, можно наткнуться на феномен "выученная беспомощность", с которым я не раз сталкивался. Может Вам это всё знакомо и вы уже это всё знаете. Просто решил поделиться своим махоньким опытом.
@yuritian8830
@yuritian8830 7 ай бұрын
@@marina-ej4qd9kc1wh Попробуйте посмотреть других, хотя уже наверное это уже и делали) И с видеоуроков лучше переходить к документации. Дабы обойти феномен "выученная беспомощность", с чем я когда-то не однократно сталкивался.
@n0escape
@n0escape 11 ай бұрын
Типизируем все часть 2: (присутствует ошибка с импортом экшнов в компоненту, чтобы они работали корректно надо их както передать в mapDispatchToProps вытащив из импортированного объекта action, иначе они просто не диспатчатся и не работают) Селекторы типизировать не надо, они подтягивают типы автоматом сократили запись джинерика типизации экшнов InferActionTypes: удаляем тип PropertyTypes и InferActionTypes на их месте создаем строчку: export type InferActionTypes = T extends { [key: string]: (...args: any[]) => infer U} ? U : never
@user-de1qf3xl5g
@user-de1qf3xl5g 2 жыл бұрын
2021 все меньше и меньше лайков! остались самые сильные
@amolotok
@amolotok 4 жыл бұрын
летииим)))
@user-pb3yt3bo9u
@user-pb3yt3bo9u 3 жыл бұрын
TypeScript, React, Redux
@StepanVorobiov
@StepanVorobiov 4 жыл бұрын
Хочется видео по Сагам!)
@shsh01212
@shsh01212 3 жыл бұрын
Блиииин, я всё жду когда Дима заорёт матом.
@StepanVorobiov
@StepanVorobiov 4 жыл бұрын
а Ant Design будет не скоро?
@onebytesiteit30-75
@onebytesiteit30-75 4 жыл бұрын
140 лайков и 0 дизов показатель. Красава!!!
@gravityarm9240
@gravityarm9240 4 жыл бұрын
Где можна посмотреть исходник
@aleksandrmatyka3118
@aleksandrmatyka3118 4 жыл бұрын
Стоит ли вообще если работаешь джуном на проекте учить какие то технологии которые в ближайший год не сможешь пощупать, к примеру если на поекте React,Redux,JS,TS есть ли смысл учить mobX, VueJS и тд, или лучше просто долбить js, react и углубляться в этих вещах а потом если возникнет необходимость в vue и тд то и так не будет проблем перейти
@narutominer
@narutominer 3 жыл бұрын
У меня в профилях всё немного по-другому, и пришлось пока в одном месте поставить any, а то ни сил ни терпения искать как это протипизировать у меня пока нет
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Файл addPostForm виден на моменте 1:25:55
@1ommy398
@1ommy398 4 жыл бұрын
Димыч ты куда пропал 😢
@zmey852
@zmey852 4 жыл бұрын
В реакте можно использовать псевдоклассы css типа hover и подобных(при наведении на условную кнопку она меняет свой стиль и выглядит как-то по другому)? Это ведь по идее нарушает flux круговорот. Как правильнее?
@mrmicolka
@mrmicolka 4 жыл бұрын
Стили - чисто внешний вид. На данные не влияют.
@Karifax
@Karifax Жыл бұрын
решил проблему в withAuthRedirect таким образом: export function WithAuthRedirect(Component: React.ComponentType) { class RedirectComponent extends React.Component { render() { if (!this.props.isAuth) return ; return ; } } let ConnectedAuthRedirectComponent = connect(mapStateToPropsforRedirect)( RedirectComponent ); return ConnectedAuthRedirectComponent; }; ----------------- type mapStateToPropsforRedirectPropsType = { isAuth: boolean } ------------------ let mapStateToPropsforRedirect = (state: AppStateType): mapStateToPropsforRedirectPropsType => { return { isAuth: state.auth.isAuth, }; };
@xleb__b
@xleb__b Жыл бұрын
спасибо брат, обнял поднял
@johnwaiaka1933
@johnwaiaka1933 4 жыл бұрын
Подскажите какой ноутбук подойдёт для обучения, есть игровые или не дорогой сойдёт?
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Доделал до 1:58:42
@olegzidane7099
@olegzidane7099 4 жыл бұрын
а какая сфера применения typescript? если его знать, то можно полностью решать на нем те же задачи что и на нативном js?
@gazzati8494
@gazzati8494 4 жыл бұрын
Димыч, в личном кабинете на сайте с апишкой статистика вроде с багой, там количество запросов за час и за 24 часа перепутаны
@genapolyakov
@genapolyakov Жыл бұрын
у меня вылетала ошибка в withAuthRedirect. Проверил все. Видно изменился синтаксис Написал немного подругами и ошибка ушла. Добавил extends MapPropsType export function withAuthRedirect(Component: React.ComponentType) Тогда и connect без ошибок и так работает, не нужно прописывать как дженерик.
@oconnor4417
@oconnor4417 Жыл бұрын
Кайф, мне помогло!
@akionka
@akionka 4 жыл бұрын
Димыч, пожалуйста, оставляй ссылку на гитхаб в описании видео)
Cute kitty gadgets 💛
00:24
TheSoul Music Family
Рет қаралды 21 МЛН
Matching Picture Challenge with Alfredo Larin's family! 👍
00:37
BigSchool
Рет қаралды 52 МЛН
Running With Bigger And Bigger Feastables
00:17
MrBeast
Рет қаралды 194 МЛН
JWT авторизация. Основы JWT - механизма.
6:45
Хочу вАйти
Рет қаралды 8 М.
22 - Hook useState / React JS - Путь Самурая 2.0
1:09:46
IT-KAMASUTRA
Рет қаралды 37 М.
СОБЕСЕДОВАНИЕ FRONTEND ЗП 220к JS, TS задачи
49:02
Кодерские собесы
Рет қаралды 86 М.
Как в 44 года стать программистом на Python. Объясняю с чего начать.
19:32
Frontend Собеседование с разбором. Путь к трудоустройству 2024
41:18