При многократном использовании одного и того же компонента React эффективнее назначить его переменной?

<div>
  <SomeComponentWithProps propA = {'some prop'} propB = {'some other prop'} >
  <SomeComponentWithProps propA = {'some prop'} propB = {'some other prop'} >
</div>

Есть ли преимущество в производительности от рефакторинга приведенного выше кода, чтобы:

const someComponent = <SomeComponentWithProps propA = {'some prop'} propB = {'some other prop'} >
<div>
   {someComponent}
   {someComponent}
</div>

Будет ли отрисован и кеширован назначенный компонент?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
877
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Is there a performance benefit to refactoring the above code to:

Теоретически да, поскольку вы звоните React.createElement только один раз. Но будет ли это иметь заметную разницу в вашем приложении - это другой вопрос. Скорее всего, нет.

Would the assigned component be rendered and cached?

tl; dr:

React.createElement в основном возвращает "дескриптор" компонента. На этом этапе компонент не создается и не отображается. Мы можем легко это проверить (обратите внимание, что конструктор не выводит консоль):

class Foo extends React.Component {
  constructor() {
    super();
    console.info('inside constructor');
  }
 
  render() {
    return 'Foo';
  }
}

const component = <Foo />;
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

Давайте посмотрим на дескриптор компонента:

function Foo({bar}) {
  return <span>{bar}</span>;
}

console.info(<Foo bar = {42} />);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

Как видите, все возвращаемые данные React.createElement - это объект, содержащий информацию о том, какую функцию вызывать, пропсы, которые нужно передать, и некоторую информацию о метаданных.

Фактический рендеринг происходит позже.

Другие вопросы по теме