React JS #12 Ссылки (Refs)

  Рет қаралды 18,094

webDev

webDev

5 жыл бұрын

#YauhenK #webDev #React #Redux #ReactRouter
Всех приветствую в курсе «React JS».
В данном видео-курсе мы с вами рассмотрим базовые понятия библиотеки React JS. Научимся создавать свои компоненты приложения. Разберёмся, как подключается и как работает React Router и с его помощью напишем простое одностраничное приложение. А так же рассмотрим такой подход контроля данных в приложении, как Redux.
Дополнительные темы, которые мы рассмотрим:
- Валидация пропсов с помощью библиотеки PropTypes
- Работа с реальным API
- Создание роутинга одностраничного приложения с помощью React Router
- Работа с менеджером состояний Redux
✒ Репозиторий курса:
✔ GitHub: github.com/YauhenKavalchuk/re...
✒ Полезные курсы на канале:
✔ ES6: • ES6
✒ Используемые ресурсы и инструменты:
✔ Atom (Редактор кода): atom.io/
✔ Create React App (рабочее окружение): github.com/facebook/create-re...
✔ React Developer Tools (расширение для браузера): chrome.google.com/webstore/de...
✔ Redux Devtools (расширение для браузера): chrome.google.com/webstore/de...
✔ Redux Devtools (репозиторий): github.com/zalmoxisus/redux-d...
✔ Fake online REST API (моковый API): jsonplaceholder.typicode.com/
✔ Hacker News (ресурс): hn.algolia.com/?query=&sort=b...
✔ Hacker News (описание API): hn.algolia.com/api
✔ Redux-LocalStorage-Simple (репозиторий): www.npmjs.com/package/redux-l...
✒ Полезные ссылки:
✔ React (документация): reactjs.org/docs/getting-star...
✔ Redux (документация): redux.js.org/
✔ React анимации (документация): reactcommunity.org/react-tran...
✔ Redux (документация): redux.js.org/
✔ React lifecycle methods +16.3 (ресурс со ссылками): projects.wojtekmaj.pl/react-li...
✔ React lifecycle methods less 16.3 (картинка): webjustify.com/wp-content/upl...
✔ React Transition Group (документация): reactcommunity.org/react-tran...
✔ React Router (репозиторий): github.com/ReactTraining/reac...
✒ Полный список готовых и планируемых курсов:
✔ Trello: trello.com/b/R6rD7qq8
✒ Автор курса:
✔ KZbin: / yauhenkavalchuk
✔ Instagram: / yauhenkavalchuk
✔ Twitter: / yauhenkavalchuk
✔ VK: YauhenKavalchuk
✔ LinkedIn: / yauhenkavalchuk
✔ GitHub: github.com/YauhenKavalchuk
✔ VK (Группа): webdevcom
✒ Поддержать развитие канала: github.com/YauhenKavalchuk/yo...

Пікірлер: 40
@iuriivatazhyshyn1568
@iuriivatazhyshyn1568 4 жыл бұрын
Даже понять не могу Кто же ети люди, что за такой качевственний контент ставят дизлайки. Спасибо за видео!
@YauhenKavalchuk
@YauhenKavalchuk 4 жыл бұрын
Спасибо за отзыв)
@dvergilyush
@dvergilyush 4 жыл бұрын
это не дизлайки, а лайки, которые ставят австралийцы :)
@user-hw2mo6ty2n
@user-hw2mo6ty2n 5 жыл бұрын
Круто, спасибо большое за качественный контент!
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
Спасибо и вам за обратную связь
@Ramosok
@Ramosok 2 жыл бұрын
Сколько у тебя полезных роликов. Спасибо!
@YauhenKavalchuk
@YauhenKavalchuk 2 жыл бұрын
Пожалуйста
@yusufrahimov9160
@yusufrahimov9160 Жыл бұрын
Спасибо за то, что вы потратили время и усилия на создание этого видеоурока. 💪 Это действительно помогло мне улучшить мои знания по теме. 📈
@YauhenKavalchuk
@YauhenKavalchuk Жыл бұрын
Спасибо большое
@alexsoft7073
@alexsoft7073 3 жыл бұрын
отличное видео. спасибо)
@YauhenKavalchuk
@YauhenKavalchuk 3 жыл бұрын
Пожалуйста
@marabej
@marabej Жыл бұрын
Хороший урок. Только одна заметка. refs довольно използваемая щука. Я занимался с react native и там за мой проект употреблял часто refs. дело в том что иногда render довольно медленной. Часто приходилось използуват прямой доступ до елемент с метод типа SetNattiveProps. Я вам честно скажу, что иногда не хватает концепция "сделай возможно болше компонентов чтоб ускорить рендеринг и обновляй только то что нужно". Часто с цель performance приходилось прямий доступ чрез refs. Кроме того можно реализирует механизм за доступ от родителских компонент к елементов внутрии дочерного компонента (за React Native, за React я не знаю).
@YauhenKavalchuk
@YauhenKavalchuk Жыл бұрын
Согласен, у ref больше возможностей чем описано, есть ещё вариант записывать и хранить данные в ref, так как это быстрее
@slavik.nychkalo
@slavik.nychkalo 3 жыл бұрын
Спасибо за видео! НО есть вопросы к такому хендлингу форм, зачем использовать controlled и uncontrolled (в совокупности) подход к работе с формами?
@YauhenKavalchuk
@YauhenKavalchuk 3 жыл бұрын
Возможно, я допустил ошибку. Нету плюсов такого подхода - форма всегда должна контролироваться
@iGotton
@iGotton 4 жыл бұрын
+
@user-vd6gb5bc3x
@user-vd6gb5bc3x 5 жыл бұрын
Подскажите пожалуйста, а если я динамически через цикл создаю элементы DOM. Как динамически мне также создать все refs (createRef())?
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
Да, можно и так. Хотя, как я и говорил ref желательно использовать по минимуму.
@user-vd6gb5bc3x
@user-vd6gb5bc3x 5 жыл бұрын
@@YauhenKavalchuk Спасибо за ответ, но я именно спрашивал про способ реализации :) Не совсем понимаю как createRef() можно в цикле прописать
@demik3106
@demik3106 4 жыл бұрын
@@user-vd6gb5bc3x можно вот так в конструкторе класса прописать: const refs = ['inputRef', 'areaRef'] .forEach(item => ( this[item] = React.createRef() ));
@user-qj2yg1rn3j
@user-qj2yg1rn3j 5 жыл бұрын
во, и МЖЦ тут описал. Вот бы так в прошлом видео
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
Тогда бы получилось, что 2 раза рассказал одно и тоже)
@DubinArtur
@DubinArtur 3 жыл бұрын
Переделать звучит грубо, обидно, а вот проабдейтить или зарефакторить самое то)
@YauhenKavalchuk
@YauhenKavalchuk 3 жыл бұрын
Учту
@some_body_qtyeeuy
@some_body_qtyeeuy Жыл бұрын
Есть ролик про useCallback и useMemo?
@YauhenKavalchuk
@YauhenKavalchuk Жыл бұрын
В плейлисте React videocast
@TORREScs
@TORREScs 5 жыл бұрын
у меня ругается редактор на то что inputRef textreaRef и selectRef not defind. почему у вас не ругается, а у меня ругается? и не могу применить такой вариант inputRef = React.createRef()
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
Перепроверьте версию Реакта, которую вы используете. Плюс, в описании видео есть ссылка на GitHub репозиторий, так что можете свериться
@TORREScs
@TORREScs 5 жыл бұрын
@@YauhenKavalchuk спасибо, большое!
@pendalfgrey1
@pendalfgrey1 5 жыл бұрын
Как насчет такого? state = { name: "", phone: "", }; handleChange = (values, event) => { this.setState({ [values]: event.current.value }); }; onChange={this.handleChange.bind(this, "name")} onChange={this.handleChange.bind(this, "phone")}
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
Тоже вариант
@vanyavoskres
@vanyavoskres 5 жыл бұрын
state = { firstName: "", secondName: "" } handleChange = (e) => { const {name, value} = e.target; this.setState({ [name]: value }) } render() { const {firstName, secondName} = this.state; return ( ) }
@jenyaspace
@jenyaspace 5 жыл бұрын
не знаете как получить детей на рефу? например current.childNodes ничего не видит
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
А что мешает прицепить ref на все нужные элементы?
@jenyaspace
@jenyaspace 5 жыл бұрын
@@YauhenKavalchuk это не возможно сделать т.к. дети моего компонента находятся во внешней библиотеке, к ним нет доступа
@user-zf1kq1vu2j
@user-zf1kq1vu2j 5 жыл бұрын
Хм, да, мы избавились от тех прохожих методов, но при этом у нас теперь будут перерисовываться все 3 компонента при изменении одного из них. На данном примере это не ощутимое различие, а вот в более крупном проекте думаю может ударить по производительности
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
А мне так не кажется. В конце концов страницы с формами пытаются всегда сделать как можно меньше, что бы они не пугали юзера. Поэтому я думаю что ничего критического в производительности произойти не должно
@user-mw9fi7po2u
@user-mw9fi7po2u 5 жыл бұрын
Возможно я чего-то не понимаю, но как по мне ничего не изменилось. В первом случае с методами, мы сетили в стейт значение для каждого элемента отдельно, что в свою очередь перезапускало рендер и перерисовывался элемент, для которого изменилось значение в стейт. Остальные оставались без изменений, то есть перерисовывался 1 элемент. Во втором случае мы сетим значения со всех элементов вместе. После чего срабатывает рендер и перерисовывается опять таки один элемент в которого изменилось значение в стейте. Для остальных элементов значения которые хранятся в стейте остались прежними и виртуал дом должен их пропустить и не перерисовывать. Получается что перерисуется опять только 1 элемент. Поправьте меня если ошибаюсь.
@yurigorsky3164
@yurigorsky3164 2 жыл бұрын
Ну во-первых, у нас не 3 компонента, а 1, и в любом случае, каким способом ты не повесь обработчики, метод render у компонента Form будет вызываться каждый раз при изменении любого из полей. Это первое. Во-вторых, даже если вы замените поля на отдельные компоненты (что вы скорее всего имели в виду), то при вызове setState на компоненте-родителе все render'ы на дочерних компонентах обязательно вызовутся. Так задумано в React изначально. Чтобы не отрисовывать дочерние компоненты, вам нужно в их методе shouldComponentUpdate вернуть false, а это уже другая история и это не зависит от того, будет ли один обработчик для всех полей или будет на каждое поле свой обработчик. Чтобы сэкономить на лишних рендерах, вам нужно в дочерний компонент пробросить через пропсы value, а в методе shouldComponentUpdate сравнить текущий value у пропс, с тем, который прилетит при изменении стейта родителя.
@user-vi1jf3xb3e
@user-vi1jf3xb3e 2 жыл бұрын
@@yurigorsky3164 Все правильно сказал про setState, просто ref помогает свести кол-во обработчиков к минимуму но его лучше не использовать где попало тк React это все таки декларативный подход.
Cool Items! New Gadgets, Smart Appliances 🌟 By 123 GO! House
00:18
123 GO! HOUSE
Рет қаралды 17 МЛН
WHO LAUGHS LAST LAUGHS BEST 😎 #comedy
00:18
HaHaWhat
Рет қаралды 23 МЛН
That's how money comes into our family
00:14
Mamasoboliha
Рет қаралды 12 МЛН
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 37 М.
React JS #15 Контекст (React Context)
11:00
webDev
Рет қаралды 29 М.
#3: React Hooks - useRef
27:52
Archakov Blog
Рет қаралды 64 М.
Never Forget React forwardRef Again
9:33
Coding in Public
Рет қаралды 15 М.
Самые загадочные хуки - useImperativeHandle и forwardRef
9:42
Веб-разработка - DevMagazine
Рет қаралды 8 М.
React 23: forwardRef
9:50
Школа web-программирования Constcode
Рет қаралды 9 М.
Cool Items! New Gadgets, Smart Appliances 🌟 By 123 GO! House
00:18
123 GO! HOUSE
Рет қаралды 17 МЛН