首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React如何知道函数组件是否是React组件?

React如何知道函数组件是否是React组件?
EN

Stack Overflow用户
提问于 2018-04-09 21:16:59
回答 3查看 2.3K关注 0票数 6

React同时支持类组件和函数组件。所有React文件的顶部都有一条import React from ‘react’语句。在创建类组件时(如:class MyClassComponent extends React.Component ...),会明确提到这个类实例从哪个类继承而来。但是,在声明函数组件(const MyFunctionComponent = () => ())时,并没有明确表示“嘿,顺便说一下,这是一个React组件”。

据我们所知,这可能是普通JavaScript中的一个函数。那么,React如何将函数识别为函数组件呢?

EN

回答 3

Stack Overflow用户

发布于 2018-04-09 21:21:47

它不会这样做,每个函数都是有效的,如果它返回一个有效的类型。然而,React不会静态地检查一个函数是否会返回一些有效的东西,所以如果它是一个函数,它只会运行它。在较新的React版本中,返回值几乎可以是所有内容。数组现在可以工作了,字符串也可以工作了。目前React支持以下类型作为返回值:

  • React元素。通常通过JSX创建。元素可以是本机DOM组件()的表示形式,也可以是用户定义的复合组件()。
  • 字符串和数字。这些在DOM.
  • 门户中呈现为文本节点。使用ReactDOM.createPortal.
  • null.创建呈现nothing.
  • Booleans.不渲染任何内容。(主要存在于支持返回测试&&模式,其中测试是boolean.)
  • Fragment (有效元素数组)

所以,除非你没有返回undefined,否则它应该可以工作,但如前所述,如果它是一个函数,它总是会执行它。

票数 2
EN

Stack Overflow用户

发布于 2018-04-09 21:24:19

下面是isValidElement()函数的代码。简而言之,它们检查它是否是具有REACT_ELEMENT_TYPE符号的$$typeof的对象(函数是对象)。

除此之外,它是否是一个正常的函数并不重要。在大多数情况下,即使我做了一些随机函数,只要它有一个render()函数,它就可以用作React元素。我不确定他们是否有生命周期功能缺失的检查,但如果他们有,那么它将工作(如果他们没有,它将抛出错误)。

当涉及到JavaScript“继承”时,它总是归结为对象的形状是否与预期的形状匹配。

票数 2
EN

Stack Overflow用户

发布于 2018-04-09 21:23:08

但它是一个简单的javascript 。它只是返回一个值,然后由React解释该值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49733955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档