In React, can I define a functional component within the body of another functional component?(在Reaction中,我可以在另一个功能组件的主体内定义一个功能组件吗?)
问题描述
我开始看到我的一些团队编写以下代码,这让我质疑我们是否以正确的方式做事,因为我以前从未见过它这样写。
import * as React from "react";
import "./styles.css";
function UsualExample() {
return <h1>This is the standard example…</h1>
}
export default function App() {
const CustomComponent = (): JSX.Element => <h1>But can I do this?</h1>
return (
<div className="App">
<UsualExample />
<CustomComponent />
</div>
);
}
它看起来呈现得很好,我看不到任何直接的不利影响,但是我们为什么不应该从另一个组件中定义CustomComponent功能组件有什么根本原因吗?
CodeSandbox示例: https://codesandbox.io/s/dreamy-mestorf-6lvtd?file=/src/App.tsx:0-342
推荐答案
这不是个好主意。每次App重新呈现时,都会为CustomComponent创建一个全新的定义。它具有相同的功能,但是因为它是一个不同的引用,所以Reaction将需要卸载旧的引用并重新挂载新的引用。因此,您将强制Reaction在每次呈现时执行额外的工作,并且还将重置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>
);
}
使用此方法,Reaction将比较<h1>和<h1>,因此不需要重新装入它。
这篇关于在Reaction中,我可以在另一个功能组件的主体内定义一个功能组件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Reaction中,我可以在另一个功能组件的主体内定义一个功能组件吗?
基础教程推荐
- HTML5 画布调整为父级 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
