function StyledLabel(value, cssClass){
return <span className={cssClass}>{value}</span>
}
используется как
{StyledLabel(value, cssClass)}
- это не традиционный функциональный компонент, а функция, возвращающая JSX.
Если вы будете следовать такому синтаксису, вы не будете возможность использовать некоторые функции функционального компонента, например, React.memo
.
Хотя вы все равно можете использовать хуки в функциональном компоненте.
Другой недостаток использования такого синтаксиса заключается в том, что вы не можете легко добавить дочерние компоненты в StyledLabel, как это делается со следующим синтаксисом
<StyledLabel>
<SomeChild/>
</StyledLabel>
Хотя внутри React тоже вызывает функцию, вызывая ее, а рендеринг JSX - это всего лишь Syntactic Sugar
, который использует React.createElement
для транспиляции, но дает вам способ сделать компонент частью Виртуальный DOM вместо его возвращаемого значения является частью виртуального dom