Рубрики
Без рубрики

Почему функции стрелки и привязки в рендеренные редакции являются проблематичными

(Подсказка: оно делает необходимостью) в предыдущем посту, я объяснил, как извлекать реагирование дочерних компонентов, чтобы избежать использования функций связывания или стрелки в рендере. Но я не предоставил четкую демо, чтобы показать, почему это полезно. Вот быстрый пример. В этом примере,

Автор оригинала: Cory House.

(Подсказка: это заставляет необходимыми и надокомпонентными капризными

В предыдущем посте я объяснил, как Извлечение реагирования дочерних компонентов, чтобы избежать использования функций связывания или стрелки в визуализации Отказ Но я не предоставил четкую демо, чтобы показать, почему это полезно.

Вот быстрый пример.

В этом примере я использую функцию стрелки в рендере, чтобы связать соответствующий идентификатор пользователя к каждой кнопке удаления.

В строке 35 я использую функцию стрелки для передачи значения для функции DELETEUSER. Это проблема.

Чтобы увидеть, почему, проверьте user.js (щелкните значок гамбургера в верхнем левом углу, чтобы выбрать разные файлы в примере). Я вхожу в консоль, каждый раз вызывается рендер. Я объявил пользователя как PURECOMPONENT Отказ Таким образом, пользователь должен только перенаправить, когда реквизит или изменение состояния. Но Когда вы нажимаете на удаление для пользователя, обратите внимание, что рендеринг вызывается Все Пользовательские экземпляры Отказ

Вот почему: родительский компонент передает функцию стрелки на реквизитах. Функции стрелки перераспределяются на каждой рендере (одинаковую историю с использованием BIND). Поэтому, хотя я объявил user.js как пуркопонент, функция стрелки в родие пользователя приводит к тому, что пользовательский компонент будет видеть новую функцию, отправляющую в реквизиты для всех пользователей. Таким образом, каждый пользователь переназначает, когда любой Нажмите кнопку удаления нажатия. ?

Резюме:

Что я должен сделать вместо этого?

Напротив, вот пример, который не использует функцию стрелки в рендере.

В этом примере index.js не имеет функции стрелки в рендере. Вместо этого соответствующие данные передаются по User.js. В user.js ondeleteclick вызывает функцию onclick, передаваемой в реквизитах с соответствующим пользователем.

С этим изменением, когда вы нажимаете на удаление, обратите внимание, что Render не вызывается для других пользователей! ?

Резюме

Для оптимальной производительности,

  1. Избегайте функций стрелки и свяжитесь о рендере.
  2. Как? Извлечь детские компоненты или Передать данные о HTML-элементе Отказ

Ищете больше на реагировании? ⚛️.

Я был авторизован несколько курсов React и JavaScript На плютаре ( бесплатная пробная версия ). Мой последний, ” Создание многоразовых реагированных компонентов «Только что опубликовал!?

Дом Кори автор Несколько курсов по JavaScript, React, Clear Code, .NET и многое другое на Pluralsight Отказ Он главный консультант по адресу Reactjsconsulting.com , архитектор программного обеспечения в Vinsolutions, Microsoft MVP и поезда разработчиков программного обеспечения на международном уровне по методике программного обеспечения, такими как интерфейс разработки и чистого кодирования. Твиты CORY о JavaScript и Front-End Development в Twitter, как @houseCor Отказ

Оригинал: “https://www.freecodecamp.org/news/why-arrow-functions-and-bind-in-reacts-render-are-problematic-f1c08b060e36/”