reactjs - 在无状态组件中定义方法的优缺点
问题描述
假设我有一个像这样的(有点做作的组件)
const ExampleComponent = (props) => {
const renderList = () => {
if (props.list) {
props.list.map((item) => <ListItem {...props.list} />);
} else {
return <div>List Not Found </div>
}
};
return (
<div>
<H1>LIST VIEW</H1>
{renderList()}
</div>
)
};
React 是否会在每个渲染滴答时重新初始化该函数?我应该担心这个还是一个微不足道的细节。
是否会考虑将我的组件写为
const renderList = (list) => {
if (list) {
list.map((item) => <ListItem {...list} />);
} else {
return <div>List Not Found </div>
}
};
const ExampleComponent = (props) => {
return (
<div>
<H1>LIST VIEW</H1>
{renderList(props.list)}
</div>
)
};
解决方案
只需阅读一点:http ://wiki.c2.com/?PrematureOptimization
“程序员会浪费大量时间去思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,比如97% 的时间:过早的优化是万恶之源。但我们不应该放弃关键的 3% 的机会。”
回答您的问题:
React 是否会在每个渲染滴答时重新初始化该函数?是的,该函数将在每次渲染时重新声明。
我应该担心这个还是一个微不足道的细节。别担心。
推荐阅读
- linux - Tmux - 更改窗口窗格时如何自动执行命令?
- algorithm - AI:如何在这个游戏中找到评估函数(极小极大算法)?
- sql - 如何使用变量作为表名 SQL 查询大型表列表?
- python - Python Unittest:在 Visual Studio Code 中未发现任何测试
- google-app-engine - 从应用引擎连接到 Kubernetes 引擎
- android - 如何扩展 android.widget 包中的像 DayPickerPagerAdapter 这样的 Android 类?
- python - 将最后 13 行 CSV 复制到新的 CSV
- iis - 在 IIS 中,如何为基本身份验证配置文件夹访问?
- android - Android中两个视图之间的滚动同步
- python-2.7 - Pandas - 如果单元格为空白,则将 pd.timedelta[ns64] 单元格转换为字符串 '--'