Это плохая идея. Каждый раз при рендеринге App
создается новое определение CustomComponent. Он имеет ту же функциональность, но поскольку это другая ссылка, react нужно будет отключить старый и перемонтировать новый. Таким образом, вы будете вынуждены реагировать на дополнительную работу над каждым рендером, и вы также будете сбрасывать любое состояние внутри CustomComponent.
Вместо этого компоненты должны быть объявлены сами по себе, а не внутри рендеринга, чтобы они создаются только один раз, а затем используются повторно. При необходимости вы можете заставить компонент принимать реквизиты, чтобы настроить его поведение:
const CustomComponent = (): JSX.Element => <h1>But can I do this?</h1>
export default function App() {
return (
<div className="App">
<UsualExample />
<CustomComponent />
</div>
);
}
Иногда вы можете делать что-то повторяющееся внутри одного компонента и хотите упростить код, используя вспомогательную функцию. Это нормально, но тогда вам нужно будет вызвать его как функцию, а не визуализировать как компонент.
export default function App() {
const customCode = (): JSX.Element => <h1>But can I do this?</h1>
return (
<div className="App">
{customCode()}
<UsualExample />
{customCode()}
</div>
);
}
При таком подходе response будет сравнивать <h1>
с <h1>
, и поэтому его не нужно повторно монтировать.