关于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的第一个变量被编译为对象;
.png)
