react组件首字母必须大写吗

react组件首字母必须大写;因为React根据首字母是否大写来区分是react组件还是dom元素。React中使用JSX语法,但浏览器无法识别JSX语法,需通过babel对JSX语法进行转义;而如果组件的首字母为小写时,其会被认定为原生DOM标签,创建一个不存在的标签是会报错的。

react组件首字母必须大写吗

本教程操作环境:Windows7系统、react18版、Dell G3电脑。

在React中声明组件时组件名的第一个字母必须是大写吗?为什么?

必须,React根据首字母是否大写来区分是react组件还是dom元素。

之前在写react遇到过这样的报错

Warning: The tag  is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.in app (at src/index.tsx:6)

登录后复制

这是因为react组件没有大写导致的。

React中使用JSX语法,但浏览器无法识别JSX语法,需通过babel对JSX语法进行转义;而如果组件的首字母为小写时,其会被认定为原生DOM标签,创建一个不存在的标签是会报错的。

原理:JSX语法 向 真实DOM的转换

我们在 React 中都是写的 JSX语法,从 JSX语法 到页面上的 真实DOM大概需要经历以下几个阶段:JSX语法 —> 虚拟DOM(JS对象) —> 真实DOM。

因为浏览器是无法识别JSX语法的,因此我们需要通过 babel 对JSX语法进行转义,然后才能生成虚拟DOM对象,而原因就是在这里。我们可以看一下babel是如何转义JSX语法的:

1.png

2.png

babel在进行转义JSX语法时,是调用了 React.createElement() 这个方法,这个方法需要接收三个参数:type, config, children。第一个参数声明了这个元素的类型。

对比上面两张图,图一中,我在创建自定义组件时没有首字母大写。 而 babel 在转义时把它当成了一个字符串 传递进去了;图二中,我把首字母大写了,babel 在转义时传递了一个变量进去。

问题就在这里,如果传递的是一个字符串,那么在创建虚拟DOM对象时,React会认为这是一个简单的HTML标签,但是这显然不是一个简单的HTML标签,因此去创建一个不存在的标签肯定是会报错的。

如果首字母大写,那么就会当成一个变量传递进去,这个时候React会知道这是一个自定义组件,因此他就不会报错了。

所以:

同理,上述错误的写法因为是小写,所以babel就把clock当作是标签生成了,而html中又没有这个元素,所以导致以一种比较奇怪的方式存在

3.png

【相关推荐:Redis视频教程】

以上就是react组件首字母必须大写吗的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2927930.html

(0)
上一篇 2025年3月11日 19:30:22
下一篇 2025年3月11日 19:30:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue与react属于什么框架

    vue与react属于JavaScript框架。vue是一套用于构建用户界面的渐进式JavaScript框架,Vue的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。react是一个用来构建用户界面的JavaScrip…

    2025年3月11日
    100
  • react用什么ui组件库

    react可用ui组件库有:1、Material-UI,有用于布局、表单、导航、数据显示和许多其他小部件的组件;2、Ant Design,有60多个组件,带有可预测的静态类型;3、Blueprint,有40多个组件;4、React Boot…

    2025年3月11日 编程技术
    200
  • react为什么要用合成事件

    react使用合成事件主要有三个目的:1、进行浏览器兼容,实现更好的跨平台;React提供的合成事件可用来抹平不同浏览器事件对象之间的差异,将不同平台事件模拟合成事件。2、避免垃圾回收;React事件对象不会被释放掉,而是存放进一个数组中,…

    2025年3月11日 编程技术
    200
  • react.js是用es6写的吗

    react.js是用es6写的,可以用Babel转译为ES5,也可以用Babel转译为JavaScript的JSX;由于React的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。使用ES6来创建组件的语法更加简洁,这种语法…

    2025年3月11日
    200
  • react是不是Spa

    react是Spa模式,即组件嵌套,其主要的传参方式有:1、在挂载的地方给组件传参;2、父子传参,即用props或ref方式传参;3、子父传参,即子组件通过触发父组件的方法来改变父组件的状态;4、兄弟传参,即通过改变公有组件的状态进而改变子…

    2025年3月11日
    200
  • ie无法识别react怎么办

    ie无法识别react的解决办法:1、安装“react-app-polyfill”,并在“src/main.js”中引入;2、在“babel.config.js”中配置参数;3、在“vue.config.js”中配置“transpileDe…

    2025年3月11日 编程技术
    200
  • react更新state方法有哪些

    react更新state方法有:1、通过key变化子组件,代码如“”;2、利用ref父组件调用子组件函数;3、通过父级给子级传数据,子级只负责渲染。 本教程操作环境:Windows7系统、react17.0.1版、Dell G3电脑。 re…

    2025年3月11日
    200
  • react axios请求拦截怎么实现

    react axios请求拦截的实现方法:1、下载axios;2、在src目录下创建一个utils文件夹用于存放公用js;3、在utils目录下创建http.js文件;4、创建axios实例;5、添加请求拦截器;6、判断cookie有没有存…

    2025年3月11日
    200
  • react框架什么时候出来的

    react框架是2013年出来的;React起源于Facebook的内部项目,于2013年5月开源。React是用于构建用户界面的JavaScript库,主要用于构建UI;用户可以在React里传递多种类型的参数,如声明代码,帮助你渲染出U…

    2025年3月11日
    200
  • react的component是什么

    在react中,component中文意思为“组件”,是封装起来的具有独立功能的UI部件;将要展示的内容,分成多个独立部分,每一个这样的部分,就是一个组件。组件有两个重要的东西,一个是属性,一个是状态。组件的属性是父组件给它的,存储的是父组…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论