javascript - 因此返回一个 JSX 必然会使函数成为一个组件?
问题描述
我有简单的代码,我有一个名为 Feed 的组件,其中包含一些道具。
在名为 Articles 的主要内容组件上,我通过 js 对象映射并返回 Feed 组件
现在,每个人都在使用匿名函数来做到这一点。
<div>
{data.map(()=> <Feed/>))} (sorry if the syntax a bit wrong but you get the idea
</div>
现在,我采用了在 map 函数之外返回 Feed 的函数
function createFeed (feedData) {
return <Feed props/>
}
并把它
<div>
{data.map(createFeed)}
</div>
它的工作原理很奇怪,但是,因此 createFeed 也是一个组件(所以我需要将名称更改为 CreateFeed)或者这只是一个将对象返回到由 map 函数创建的新数组的函数,因此它只是一个函数而不是一个组件?
解决方案
这里没有魔法。
<div>{data.map(createFeed)}</div>
相当于:
<div>{ data.map(item => createFeed(item) }</div>
由于该createFeed
函数在没有添加任何逻辑的情况下返回组件,因此您可以省略它并返回组件。这都一样。
编辑:
在您的情况下,您只是将函数用作工厂,而不是功能组件,因此您可以争辩说它不需要大写。
也就是说,如果您确定不会将该函数用作 Jsx 中的组件,那么这不是问题。如果你想将它用作 Jsx,这会导致一个问题,记录在这里:https ://reactjs.org/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized
如果工厂功能没有用,我会省略它,但最终选择取决于您。
推荐阅读
- python - 请求 Python 和 Curl 命令不起作用
- google-chrome-extension - GOOGLE ANALYTICS vs CHROME PLATFORM ANALYTICS vs FIREBASE ANALYTICS 用于带有 Web 组件和移动应用程序的 Chrome 扩展?
- python - Pandas 将多行转换为标题(多级)
- mysql - Group By 忽略子查询中的排序
- cmake - CMake FetchContent 显示下载进度
- node.js - 无法使用 mongoose 获取确切的值
- java - 用 future 和 completableFuture 中断读取方法
- c - 如何在不使用 malloc 内存的情况下调用 opendir?
- typescript - 层上的编译时间错误,但运行时没问题
- tsql - tsql 日期范围内的列总和