Компонент высшего порядка — это функция, которая принимает компонент в качестве параметра и возвращает новый компонент. Наиболее распространенной из них является функция подключения Redux. Помимо простого совместного использования библиотек инструментов и простой композиции, лучший способ для HOC — это совместное поведение между компонентами React. Если вы обнаружите, что написали много кода в разных местах, чтобы сделать одно и то же, вы можете использовать HOC.
Поскольку обновления this.props и this.state могут быть асинхронными, на их значения нельзя полагаться при вычислении следующего состояния.
существовать super() Подклассы нельзя использовать до тех пор, пока они не будут вызваны. this из,существовать ES2015 середина,Подклассы должнысуществовать constructor серединанастраиватьиспользовать супер(). передача props Давать super() из Причина – дефекация(существовать Подкласссерединаспособныйсуществовать constructor доступ this.props。
Обработчику событий React будет передан экземпляр SyntheticEvent, который является кросс-браузерной оболочкой для собственных кросс-браузерных событий React. Эти синтетические события имеют тот же интерфейс, что и привычные вам собственные события, за исключением того, что они работают одинаково во всех браузерах. React фактически не привязывает события к самому дочернему узлу. React будет использовать один прослушиватель событий верхнего уровня для прослушивания всех событий.
Refs это использовать React.createRef() метод создан и передан
ref
свойства добавлены в React на элементе
JSX — это JavaScript XML. Существует компонент React, построенный внутри тегов, подобный синтаксису XML. JSX разрабатывает набор синтаксических сахаров для act.js, а также является основой для использования act.js. Существование React может работать без использования использования JSXиз. Однако использование использованияJSX может улучшить читаемость компонента, поэтому рекомендуется использовать использованиеJSX.
Если вы обновите состояние напрямую, то компонент не будет перерисовываться, и это использовать
setState()
метод. Он планирует обновления объектов состояния компонентов. При изменении состояния компонент реагирует повторным рендерингом.
Расширенная нотация передачи по значению расширяет каждый элемент в объекте или массиве. Это синтаксис ES6.
Хуки генерируются для следующих проблем при использовании реакции:
Трудно воспроизвести логику состояния между компонентами.,существоватьhooksДо,Реализация репликации компонентов,Обычно используйте высококачественные компоненты и Render Props.,Их суть заключается в продвижении сложной логики в родительский компонент середина.,Легко создавать множество компонентов упаковки.,Добавляет вложенные регионы.
Логика компонентов становится все более сложной, особенно функциональные жизненного циклсередина часто содержит некую не связанную с логикой, совершенно не связанную с кодом, но существующую тот же самый метод середина, комбинированную вместе. так легко производить ошибки и приводят к логическим несоответствиям.
При использовании компонентов класса необходимо понимать сложные компоненты класса. JavaScript середина this В процессе работы нельзя забывать привязывать обработчики событий и другие операции. Код сложный и избыточный. Кроме того, компоненты класса также сделают недействительными некоторые меры по оптимизации реагирования.
В ответ на упомянутые выше проблемы команда реагирования разработала хуки, которые в основном служат двум целям:
use представляет методы управления состоянием и жизненным циклом в существующем функциональном компоненте середина.
Замените компоненты более высокого порядка и визуализируйте реквизиты для абстракции и возможности повторного использования.
Плюсы также очевидны:
Избегать широкого использованияиспользоватьиз функционального компонента существует процесс поздней итерации середина,Необходимость переносить некоторые побочные эффектыиспользовать,Вместо этого его необходимо преобразовать в компонент класса.,Это помогает функциональным компонентам внедрять методы управления состоянием и жизненным циклом.
Hooks После его появления мы извлекаем сложную логику на верхний уровень компонента вместо того, чтобы принудительно продвигать ее в родительский компонент середина. Таким образом вы сможете избежать HOC и Render Props «Вложенные регионы», возникшие в результате
Избегайте проблем, вызванных указанным выше компонентом класса.
1. Имитировать компонентDidMount
useEffect(()=>{console.log(‘第一次渲染часнастраиватьиспользовать’)},[])
2. Имитация компонентаDidUpdate
Отсутствие второго параметра означает прослушивание всех обновлений атрибутов.
useEffect(()=>{console.log(‘Любой атрибут должен быть изменен’)})
Чтобы отслеживать изменения в нескольких свойствах одновременно, вам необходимо передать свойства в виде массива во второй параметр.
useEffect(()=>{console.log(‘nизмененный’)},[n,m])
3. Имитировать компонентWillUnmount
useEffect(()=>{
const timer = setTimeout(()=>{
...
},1000)
return()=>{
console.log('Компонент уничтожен')
clearTimerout(timer)
}
})
useState()
Что это такое?useState — это реакция hooksсерединачаще всегоиспользоватьииспользовать Самый простой методизодинhook。useState(0)
返回один元组,Чтосередина第один参数count
это счетчикиз Текущий статус,setCounter
Предоставляет метод обновления состояния счетчика.
виртуальный DOM Рендеринг: при вызове метода рендеринга он возвращает новый виртуальный компонент. DOM структура. Когда вызывается setState(), рендеринг будет вызван снова, потому что метод mustComponentUpdate всегда возвращает true по умолчанию, поэтому по умолчанию React Никакой оптимизации нет. Родной DOM Рендеринг:Реагировать ТолькосуществоватьвиртуальныйDOMсередина Изменить истинуDOMузел,И количество модификаций очень маленькое — это отличная особенность React.,Он оптимизирует реальные изменения DOM.,Сделайте React быстрее.
key используется для идентификации уникальных Virtual DOM Элементы и их драйверы UI соответствующие данные. они переработаны DOM середина все текущие из элементов в помощь React Оптимизированный рендеринг. Эти key Должно быть уникальное число или строка, React Просто измените порядок элементов вместо их повторного рендеринга. Это может улучшить производительность вашего приложения.
Redux Сегодня это одна из самых популярных библиотек для фронтенд-разработки. это JavaScript Контейнер прогнозируемого состояния программы, используемый для управления состоянием всего приложения. использовать Redux развиватьизотвечатьиспользовать Легко проверить,Может работать в разных средах,и демонстрировать последовательное поведение
Преимущества Redux заключаются в следующем:
предсказуемость результата - Поскольку источник истины всегда один, т.е. store , поэтому не возникает вопроса о том, как синхронизировать текущее состояние с другими частями действия. Ремонтопригодность - Код становится проще поддерживать, он имеет предсказуемые результаты и строгую структуру. Серверный рендеринг - Вам просто нужно создать store Просто передайте его клиенту. Это полезно для первоначального рендеринга и может оптимизировать производительность приложения, обеспечивая лучшее взаимодействие с пользователем. Инструменты разработчика - От действий до изменения статуса — разработчики могут отслеживать все происходящее в режиме реального времени. Сообщество и экосистема - Redux За ним стоит огромное сообщество, что делает его еще более очаровательным. Большое сообщество талантливых людей способствует улучшению библиотеки и разработке различных приложений. Легко проверить - Redux Код в основном небольшой, чистый и независимый от функциональности. Это делает код тестируемым и автономным. организовать - Redux Объясняется, как именно организовать код, что делает существование команды кода более последовательным и простым при использовании.
useState: определяет данные состояния, параметр — это инициализированные данные, а возвращаемое значение имеет два значения: 1. Значение инициализации, 2. Метод модификации.
useEffect: функция побочных эффектов. Как следует из названия, побочные эффекты будут иметь побочные эффекты только после использования.
Используется в качестве жизненного цикла: если второй параметр не записан, он сработает, как только страница обновится, компонентDidMount compoentDidUpdate
Если второй параметр представляет собой пустой массив, он будет выполнен только один раз — компонентDidMount.
Массив середина и некоторые переменные,Использовать в качестве слушателя,Отслеживать изменения данных,
useEffect — это функция побочного эффекта, которая запускается после завершения обновления компонента.
если мысуществоватьuseEffect Возвращает функцию, вызываемую при уничтожении компонента
useMemo: используется для расчета данных, возврата результата и отслеживания изменений данных. Второй параметр — это отслеживаемые данные, которые можно кэшировать.
useMemoиuseEffect Для сравнения используйтеMemo Жизненный цикл запускается при обновлении компонента.
Как useMemo оптимизирует производительность?
Когда родительский компонент взаимодействует с дочерним компонентом,,Данные родительского компонента середина изменились,Обновление родительского компонента приводит к обновлению и рендерингу дочернего компонента.,Но если изменение данных не имеет ничего общего с подкомпонентом, то,Обновление подкомпонента приводит к ненужному рендерингу DOM подкомпонента.,Это сравнительная производительность,На данный момент мы можем использовать Memo или memo для кэширования компонентов.,Уменьшите ненужный рендеринг DOM дочерних компонентов.
useCallback: когда родительский компонент передает функцию дочернему компоненту, изменение родительского компонента приведет к повторному вызову функции для создания новой области, поэтому дочерний компонент все равно будет обновляться и отображаться в At. на этот раз мы можем использовать useCallback для кэширования компонента.
useRef: эквивалент использования createRef, создание информации об атрибутах компонента.
useContext: эквивалент существующего функционального компонента середина для получения номера статуса контекста из информации о содержимом.
useReducer: useReducer используется для недостатков useState. Данными можно управлять централизованно, а данные и логическую информацию можно обрабатывать отдельно.
Браузеры могут читать только объекты JavaScript.,И не может читать обычные объекты JavaScript в JSX. поэтому,Чтобы браузер мог читать JSX,первый,Нам нужно использовать конвертер изJSX, например Babel, для преобразования файлов JSX в объекты JavaScript.,Затем он передается браузеру Давать.
Компоненты более высокого порядка — это методы высокого уровня, которые фокусируются на логике компонента. по сути,Это шаблон, полученный из свойства React из композиции. HOC — это пользовательский компонент,существование его середина оборачивает другой компонент. Они могут принимать любые динамически предоставляемые подкомпоненты.,Но он не будет модифицировать или модифицировать какое-либо поведение своих входных компонентов. Можно сказать, что HOC — это «чистые» компоненты.
StrictMode
это инструмент для выявления проблем, которые следует использовать в программе середина существования. и Fragment
Такой же,StrictMode
Ничего видимого не будет отображено Пользовательский интерфейс. Он запускает дополнительные проверки и предупреждения для своих дочерних элементов.
(1) Контролируемые компоненты существование позволяет форме использования собирать использование, когда пользователь входит,Например, все элементы должны быть привязаны к событию изменения.,При изменении статуса формы,Событие onChange будет вызвано,Обновите компонент isstate. Такой компонент существованияReactсередина называется управляемым компонентом.,существовать受控компонентысередина,Компонент отображает состояние «из», соответствующее его значению «иззначение» или атрибуту «проверено».,React таким образом устраняет частичное состояние компонента.,Сделать все государство управляемым. React официально рекомендует использовать компоненты контролируемой формы.
Процесс обновления состояния контролируемых компонентов:
может быть инициализирован с помощьюstateсередина Настроить формуиззначение по умолчанию Всякий раз, когда значение формы изменяется, вызывается обработчик события onChange. Обработчик событий получает измененное состояние через объект события e и обновляет состояние компонента. Как только состояние будет обновлено с помощью метода setState, будет запущен повторный рендеринг представления для завершения обновления компонента формы. Контролируемые дефекты компонентов: Значения элементов формы управляются компонентами React. При наличии нескольких полей ввода или нескольких таких компонентов, если вы хотите получить все значения одновременно, вы должны написать обработчик событий для каждого из них, который сделает код очень раздутым, поэтому для решения этой ситуации появились неуправляемые компоненты.
(2) Неконтролируемые компоненты Если компонент формы не имеет значения реквизит (опция радио и кнопка проверки, соответствующая из, отмечены реквизит),Его можно назвать неконтролируемым компонентом. существуют Неконтролируемый компонентсередина,Вместо написания обработчика событий для каждого обновления статуса вы можете использовать ссылку, чтобы получить форму ценить из DOM.
Сходства заключаются в следующем. (1) Все они используются для создания пользовательского интерфейса. Библиотека JavaScript. (2) Все они представляют собой быстрые и легкие библиотеки кода (здесь имеется в виду Основная библиотека React). (3) Все они имеют компонентную архитектуру. (4)都делатьиспользоватьвиртуальныйDOM。 (5) Вы можете указать существование отдельно из HTML-файла середина или указать существующее. Настройка Webpack из более сложного модуля середина. (6) Все они имеют независимые, но общие маршрутизаторы и библиотеки управления состоянием. Самая большая разница между ними в том, что Vue. js обычно использует файлы шаблонов HTML,а React полностью использован JavaScriptсоздаватьвиртуальныйDOM。 Vue. js также имеет «изменяемое состояние» реактивность» перерисовывает автоматизированную систему обнаружения.
Жизненный цикл компонента React разделен на три отдельных этапа: Начальная фаза рендеринга: это фаза, на которой компонент собирается начать свой жизненный путь и достичь DOM. Фаза обновления: после того, как компонент добавлен в DOM, он может обновляться или перерисовываться только тогда, когда происходят изменения реквизита или состояния. Это происходит только на этом этапе. Фаза удаления: это последняя фаза жизненного цикла компонента. На этом этапе компонент уничтожается и удаляется из DOM.
Некоторые из наиболее важных методов жизненного цикла: компонентWillMount() - существование отображается до существования выполнения на стороне клиента и на стороне сервера. компонентDidMount() — выполняется только на стороне клиента после первого рендеринга существования. компонентWillReceiveProps() — существует, получает реквизиты от родительского класса и корректирует их перед рендерингом другого. mustComponentUpdate() — возвращает истинное или ложное значение в зависимости от определенных условий. Возвращает true, если вы хотите, чтобы компонент обновлялся, в противном случае — false. По умолчанию он возвращает false. componentWillUpdate()——существоватьDOMсередина进行呈现Донастраиватьиспользовать。 компонентDidUpdate() — вызывается сразу после того, как происходит рендеринг. компонентWillUnmount()—существовать удаляет компонент из DOM, а затем вызывает егоиспользовать.
Синтетические события — это объекты, которые действуют как кросс-браузерные оболочки для событий браузера. Они объединяют различные варианты поведения браузера в одном API. Это сделано для того, чтобы событие существовало и отображало согласованные атрибуты в разных браузерах.
Чтобы использовать безопасность домена: существование До стрелочной функции каждая вновь созданная функция имеет свое собственное значение, определенное (существовать конструктор середина
новый объект;существоватьв строгом режиме,函数настраиватьиспользоватьв this не определено, если функция называется «методом объекта», она является базовой;
базовый объект и т. д.), но стрелочные функции этого не делают, которые используют значение this включающего контекста выполнения.
Просто: функции стрелок легко читать и писать.
Ясность: когда все является стрелочной функцией, любую обычную функцию можно сразу использовать для определения области действия. Разработчики всегда могут найти
следующий более высокий оператор функции, чтобы увидеть значение этого
потому что this.props и this.state Обновления могут быть асинхронными, и на их значения нельзя полагаться при вычислении следующего state。
существовать super() Подклассы нельзя использовать до тех пор, пока они не будут вызваны. this из,существовать ES2015 середина,Подклассы должнысуществовать constructor серединанастраивать
использовать super() . передача props Давать super() из Причина – дефекация于(существовать Подкласссередина)способныйсуществовать constructor доступ
this.props 。
React создам виртуальный DOM(virtual ДОМ). Когда состояние компонента меняется, React пройдет первым “diffing”
Алгоритм пометки виртуальный DOM в изменении, второй шаг — сверка (согласование), будетиспользовать diff обновить результаты DOM。
你可以делатьиспользовать Инициализатор свойства(property инициализаторы), чтобы правильно привязать обратные вызовы, create-реагировать-приложение Он также поддерживается по умолчанию
из. существует обратный вызов середина. Вы можете использовать стрелочную функцию, но проблема в том, что каждый раз, когда компонент выполняет рендеринг, создается новый обратный вызов.
существует выражение JSX середина, начальный тег (например, ) и закрывающий тег (например. ) будет использоваться как специальный атрибут
props.children автоматически передается Давать содержащие его компоненты.
Компонент прокси-свойства наследуется от React.Component и получает свое имя после передачи Давать обернутые компонентыprops.
diff обновить результаты DOM。