前言
在我们写 React 项目的时候,我们发现自定义的组件名一定要首字母大写,否则会报错,这是为什么呢?我想针对这个问题发表一些我的浅薄的见解,如果有说的不对或者不充分的地方还望各位大佬指出,谢谢!
JSX语法 向 真实DOM的转换
我们在 React 中都是写的 JSX语法,从 JSX语法 到页面上的 真实DOM大概需要经历以下几个阶段:JSX语法 —> 虚拟DOM(JS对象) —> 真实DOM。
因为浏览器是无法识别JSX语法的,因此我们需要通过 babel 对JSX语法进行转义,然后才能生成虚拟DOM对象,而原因就是在这里。我们可以看一下babel是如何转义JSX语法的:

首先,我们发现,babel在进行转义JSX语法时,是调用了 React.createElement() 这个方法,这个方法需要接收三个参数:type, config, children。第一个参数声明了这个元素的类型。
对比上面两张图,图一中,我在创建自定义组件时没有首字母大写。 而 babel 在转义时把它当成了一个字符串 传递进去了;图二中,我把首字母大写了

本文探讨了React中自定义组件名需首字母大写的原因,主要涉及JSX语法到真实DOM的转换过程。当组件名首字母小写时,babel将其解释为字符串,React尝试创建一个不存在的HTML标签,导致错误。而首字母大写时,React识别为自定义组件,避免了错误的发生。
最低0.47元/天 解锁文章
2437





