Отладка приложений React с помощью React DevTools
Почему вы должны отлаживать приложения React?
Отладка - один из самых полезных навыков, которым может обладать разработчик. Она позволяет быстро и эффективно ориентироваться и находить ошибки в коде. В современном вебе это возможно благодаря использованию различных инструментов и техник.
React - одна из самых быстроразвивающихся front-end библиотек. Она позволяет легко создавать сложные и интерактивные пользовательские интерфейсы. Как и другие библиотеки и фреймворки, она имеет набор инструментов для отладки, называемый React development tools.
Что такое React DevTools?
Инструменты разработки React (React DevTools) - это расширение браузера, доступное для Chrome, Firefox и как отдельное приложение, которое позволяет вам осматривать иерархию компонентов React в инструментах разработчика Chrome. Оно предоставляет дополнительный набор специфических для React виджетов для осмотра, чтобы помочь при разработке. С момента своего создания команда разработчиков выпустила множество релизов.
В этом материале я продемонстрирую несколько способов использования его возможностей для улучшения отладки приложений React с его помощью.
Как установить React DevTools
React DevTools доступен в виде расширения для Chrome и Firefox. Если вы уже установили расширение, оно должно обновиться автоматически. Если вы используете автономную оболочку (например, в React Native или Safari), вы можете установить новую версию из NPM:
npm install -g react-devtools@^4
React DevTools улучшение производительности
DevTools предлагает значительный прирост производительности и улучшенную навигацию. Некоторые аспекты были изменены, чтобы сделать его удобным для использования в более крупных приложениях.
Фильтрация компонентов с помощью React DevTools
В предыдущих версиях DevTools навигация по большим спискам компонентов была немного утомительной. Но теперь DevTools предоставляет возможность фильтровать компоненты, чтобы скрыть те, которые вас не интересуют.
Чтобы получить доступ к этой функции, давайте отфильтруем три компонента.
Чтобы отфильтровать компонент и сосредоточиться на интересующем нас компоненте, нажмите на значок настройки под вкладкой компонентов. Перед вами появится всплывающее окно. Перейдите на вкладку компонентов и выберите предпочтительный вариант сортировки.
После того как мы отфильтровали компоненты, они становятся скрытыми по умолчанию, но после отключения фильтра становятся видимыми. Эта функция пригодится, если вы работаете над проектом с большим количеством компонентов, и быстрая сортировка становится реальной необходимостью. Еще интереснее то, что настройки фильтра запоминаются между рабочими сессиями.
Встроенные props в React DevTools ушли в прошлое
Чтобы облегчить просмотр больших деревьев компонентов и ускорить работу DevTools, компоненты в дереве больше не отображают встроенные props.
Чтобы увидеть эту функцию в действии, достаточно выбрать компонент, и все его props, state и hooks будут отображены в правой части консоли.
В нашем примере приложения мы передаем реквизиты только компоненту contacts
. Щелкнув на нем, вы увидите значение prop, переданного ему, а щелкнув на других компонентах, вы увидите, что props им не передавались.
Хотя эта функция может быть не так полезна для небольших React-проектов, она пригодится при работе с большими React-проектами.
Отладка неожиданных значений prop и элементов компонентов
Рассмотрим следующий класс React:
import ABC from 'abc'; import XYZ from 'xyz'; class Main extends Component { constructor(props) { super(props); this.state = { name : "John" } } render() { const { name } = this.state; return ( <ABC> <XYZ name={name} /> </ABC> ) } }
ABC
является родителем XYZ
, но Main
является владельцем компонента, а только владельцы могут отправлять props вниз.
В React Dev вы можете быстро отладить неожиданное значение prop, пропуская родителей. В DevTools v4 добавлен список rendered by
в правой панели, который позволяет быстро просмотреть список владельцев, чтобы ускорить процесс отладки.
Щелкнув на любом из компонентов в нашем приложении, мы можем увидеть компоненты, которые их отобразили. Это очень полезно при попытке отследить происхождение определенного prop.
Она также поставляется с обратной функцией, называемой owners tree
. Это список того, что рендерится конкретным компонентом - того, чем он "владеет". Это представление похоже на просмотр источника метода рендеринга компонента и может быть полезным способом изучения больших, незнакомых приложений React.
Чтобы использовать эту функцию для отладки приложения, дважды щелкните компонент для просмотра дерева владельцев и нажмите кнопку "x", чтобы вернуться к полному дереву компонентов. Вы также можете перемещаться по дереву, чтобы увидеть все дочерние элементы компонента.
Визуальные улучшения в React DevTools
Представление компонентов с отступом
В предыдущих версиях React DevTools для просмотра глубоко вложенных компонентов требовалась вертикальная и горизонтальная прокрутка, что затрудняло отслеживание больших деревьев компонентов. Теперь DevTools динамически регулирует отступы во вложенных компонентах для устранения горизонтальной прокрутки.
Чтобы использовать эту функцию в нашем приложении, перейдите на вкладку компонентов, затем нажмите на любой компонент, и все его дочерние компоненты автоматически появятся под ним с автоматическим отступом от следующего компонента.
Улучшенный поиск
Ранее, при поиске в DevTools, результатом часто было отфильтрованное дерево компонентов, показывающее совпадающие узлы в качестве корней, т.е. другие компоненты были скрыты, а совпадение поиска теперь отображалось как корневые элементы.
Сейчас можно легко искать по своим компонентам с отображением результатов в строке, подобно поиску в браузере.
Функциональные улучшения в React DevTools
Улучшенная поддержка хуков
Проекты React на основе хуков можно отлаживать быстрее и лучше, они имеют такой же уровень поддержки, как props и state.
Восстановление выбора между перезагрузками
Во время отладки при нажатии кнопки перезагрузки DevTools пытается восстановить последний выбранный элемент.
Допустим, мы сортировали компонент Persons
в нашем примере приложения до того, как произошло обновление страницы, DevTools возобновит работу с автоматически выбранным компонентом Persons
.
Переключение режима ожидания
API Suspense в React позволяет компонентам "ждать" или делать "что-то" перед рендерингом. Компоненты <Suspense>
можно использовать для определения состояния загрузки, когда компоненты, расположенные глубже в дереве, ожидают рендеринга.
DevTools позволяет тестировать эти состояния загрузки с помощью этого переключателя:
Изменения в профайлере в React DevTools
Перезагрузка и профиль
Профилировщик - это мощный инструмент для настройки производительности компонентов React. Legacy DevTools поддерживал профилирование, но только после обнаружения подходящей версии React, поддерживающей профилирование. Из-за этого не было возможности профилировать начальный mount (одна из наиболее чувствительных к производительности частей) приложения.
Сейчас уже эта функция поддерживается с помощью действия "перезагрузить и профилировать":
Список рендеров компонентов
Профилировщик отображает список всех случаев рендеринга выбранного компонента во время сеанса профилирования, а также продолжительность каждого рендеринга. Этот список можно использовать для быстрого перехода между коммитами при анализе производительности конкретных компонентов.
Для нашего примера приложения мы видим, что некоторые компоненты отображаются дважды в течение секции, теперь у нас есть направление для отладки, которое может потенциально улучшить производительность.
Заключение
В этом руководстве мы рассказали об отладке приложений React с помощью DevTools. Мы также рассмотрели, как они облегчают отладку вашего кода. Если у вас есть вопросы или дополнения, обязательно оставьте комментарий. Удачи!