Является ли повторный рендеринг страницы медленнее, чем повторный рендеринг компонента?

avatar
Big Cat Public Safety Act
1 июля 2021 в 15:59
35
0
0

У меня есть два варианта дизайна:

двухстраничный вариант:

function PageOne() {
  return ( <> <Link to="pageTwo"><button></Link>
  <navbar>
  <contentOne>
  </>)
}
function PageTwo() {
  return ( <> <Link to="pageOne"><button></Link>
  <navbar>
  <contentTwo>
  </>)
}

опция одной страницы:

function Page()
  return ( <> <button>
  <navbar>
  button ? <contentOne> : <contentTwo>
  </>)
)

Был ли вариант с одной страницей быстрее, поскольку он всегда повторно отображает только элементы, а вариант с двумя страницами повторно отображает все элементы, даже если постоянно меняется только содержимое?

Источник
Robin Zigmond
1 июля 2021 в 16:03
4

Я бы подумал, что это не должно иметь большого значения, виртуальный DOM React и проверка различий означают, что в обоих случаях в реальном DOM будет фактически затронута только часть contentOne/contentTwo. Таким образом, любая фактическая разница в производительности, вероятно, будет зависеть от того, как вызываются соответствующие функции и сколько они стоят, но разница, если она есть, в большинстве практических случаев, вероятно, будет незначительной. Как всегда: если сомневаетесь, оцените!

szilagyi.sandor
1 июля 2021 в 16:05
0

Я предпочитаю вариант 2, потому что да, он предотвращает ненужные пересчеты (даже если он действительно очень маленький) и содержит меньше кода. Я бы предложил создать компонент под названием Layout, который берет дочерние элементы и выводит панель навигации и прочее.

trixn
1 июля 2021 в 16:07
3

Это вопрос не только производительности, но и качества кода. Первый пример не DRY. По сути, это дублированный код, в котором отличается только одна часть, что затрудняет его поддержку. Если у вас уникальный макет, в котором всегда отличается только определенная часть, общие элементы должны быть извлечены в компонент.

Ответы (0)