关于React VDOM的一些理解
JSX和createElement
我们在实现一个React
组件时可以选择两种编码方式,第一种是使用JSX
编写:
1 | class Hello extends Component { |
第二种是直接使用React.createElement
编写:
1 | class Hello extends Component { |
实际上,上面两种写法是等价的,JSX
只是为 React.createElement(component, props, ...children)
方法提供的语法糖。也就是说所有的JSX
代码最后都会转换成React.createElement(...)
,Babel
帮助我们完成了这个转换的过程。
- 为什么React自定义组件需要大写首字母? 注意,
babel
在编译时会判断JSX
中组件的首字母,当首字母为小写时,其被认定为原生DOM
标签,createElement
的第一个变量被编译为字符串;当首字母为大写时,其被认定为自定义组件,createElement
的第一个变量被编译为对象;