当前位置: 首页 > 知识库问答 >
问题:

ReactJS组件名称必须以大写字母开头?

宋新知
2023-03-14

我正在JSBin上玩ReactJS框架。

我注意到,如果我的组件名称以小写字母开头,它就不起作用。

例如,以下内容不会呈现:

var fml = React.createClass({
  render: function () {
    return <a href='google.com'>Go</a>
  }
});

React.render(<fml />, document.body);

但只要我用fml替换fml它就会呈现。

我不能用小字母开始标签有什么原因吗?

共有3个答案

焦阎宝
2023-03-14

来自官方的React参考:

当一个元素类型以小写字母开头时,它引用一个内置组件,如or,并导致传递给React.createElement的字符串'div'或'span'。以大写字母开头的类型,如compile to React.createElement(Foo),并与JavaScript文件中定义或导入的组件相对应。

还请注意:

我们建议使用大写字母命名组件。如果您确实有一个以小写字母开头的组件,请在JSX中使用它之前将其分配给大写变量。

这意味着一个人必须使用:

constfoo=Foo foo用作JSX中的组件元素之前,请执行code>。

常元章
2023-03-14

@Alexandre Kirszenberg给出了一个非常好的答案,只是想补充另一个细节。

React用于包含众所周知的元素名称的白名单,如div等,它用于区分DOM元素和React组件

但是因为维护这个列表并不那么有趣,而且因为网络组件使得创建自定义元素成为可能,所以他们制定了一条规则,所有React组件都必须以大写字母开头,或者包含一个点。

秦才良
2023-03-14

在JSX中,小写标记名称被认为是超文本标记语言标记。但是,带点(属性访问器)的小写标记名称不是。

请参阅HTML标记与React组件。

 类似资料:
  • 问题内容: 我正在使用JSBin上的ReactJS框架。 我注意到,如果我的组件名称以小写字母开头,那么它将不起作用。 例如,以下内容不呈现: 但是,一旦我替换为,它就会渲染。 我不能以小写字母开头的标签有原因吗? 问题答案: 在JSX中,小写标签名称被认为是HTML标签。但是,带点号(属性访问器)的小写标记名称不是。 参见HTML标签与React组件。 编译为(html标记) 编译为 编译为

  • 我在PostgreSQL中有一个表: 我正在这个表上尝试Map,所以我使用了JPA注释(见下文)。这是我的: 最后,这是我的实体类: 如果我有这样的,我从PostgreSQL中得到消息 当我尝试转义引用时 我试过这个问题的回答,但不起作用 Spring boot JPA在表中插入带有Hibernate的大写字母名称 我一直在搜索改进的NamingStrategy,这似乎是spring boot中的

  • 问题内容: 我的应用程序与Firebase数据库和身份验证链接。 用户创建帐户时,唯一的密码要求是6个字符。无论如何,我可以使密码更复杂,例如使它们具有大写字母和数字。 我可以直接从firebase中执行此操作,还是需要从我的代码中执行此操作? 问题答案: 使用此功能。它包括6-15的范围,即最少6个字符和最多15个字符。分别为一个大写字母和一个数字。 对于有效的密码字符串,此函数将返回true

  • 我尝试设置我的JPA映射。由于某些原因,我必须有相同的java变量/表列名(包括大写字母),但我不能设置Hibernate。我尝试了明确的列名: 对于隐式映射: 这两种方法都创建不带大写字母的列名——“nextinvoicenr”。 我还试图改变Hibernate配置添加: 但没有成功

  • 问题内容: 我有一个带有许多子元素的React(15.5.4)组件,其中一些是HTML元素,另一些是其他React组件。 我正在使用服务器渲染,并且在服务器和客户端上需要相同的行为。客户将使用React的生产版本。 我需要遍历子级并确定一种特定类型的React组件。所以我首先想到的是迭代使用并寻找组件名称。 似乎并且不存在。 现在,存在,它可以是一个字符串(对于HTML元素),也可以是一个函数(对

  • 我正在使用Python和Flask对密码进行表单验证。密码需要包含至少一个大写字母和至少一个数字。 我目前失败的尝试...