React同时支持类组件和函数组件。所有React文件的顶部都有一条import React from ‘react’语句。在创建类组件时(如:class MyClassComponent extends React.Component ...),会明确提到这个类实例从哪个类继承而来。但是,在声明函数组件(const MyFunctionComponent = () => ())时,并没有明确表示“嘿,顺便说一下,这是一个React组件”。
据我们所知,这可能是普通JavaScript中的一个函数。那么,React如何将函数识别为函数组件呢?
发布于 2018-04-09 21:21:47
它不会这样做,每个函数都是有效的,如果它返回一个有效的类型。然而,React不会静态地检查一个函数是否会返回一些有效的东西,所以如果它是一个函数,它只会运行它。在较新的React版本中,返回值几乎可以是所有内容。数组现在可以工作了,字符串也可以工作了。目前React支持以下类型作为返回值:
所以,除非你没有返回undefined,否则它应该可以工作,但如前所述,如果它是一个函数,它总是会执行它。
发布于 2018-04-09 21:24:19
下面是isValidElement()函数的代码。简而言之,它们检查它是否是具有REACT_ELEMENT_TYPE符号的$$typeof的对象(函数是对象)。
除此之外,它是否是一个正常的函数并不重要。在大多数情况下,即使我做了一些随机函数,只要它有一个render()函数,它就可以用作React元素。我不确定他们是否有生命周期功能缺失的检查,但如果他们有,那么它将工作(如果他们没有,它将抛出错误)。
当涉及到JavaScript“继承”时,它总是归结为对象的形状是否与预期的形状匹配。
发布于 2018-04-09 21:23:08
但它是一个简单的javascript 。它只是返回一个值,然后由React解释该值。
https://stackoverflow.com/questions/49733955
复制相似问题