关于React VDOM的一些理解

关于React VDOM的一些理解

JSX和createElement

我们在实现一个React组件时可以选择两种编码方式,第一种是使用JSX编写:

1
2
3
4
5
class Hello extends Component {
render() {
return <div>Hello ConardLi</div>;
}
}

第二种是直接使用React.createElement编写:

1
2
3
4
5
class Hello extends Component {
render() {
return React.createElement('div', null, `Hello ConardLi`);
}
}

实际上,上面两种写法是等价的,JSX只是为 React.createElement(component, props, ...children)方法提供的语法糖。也就是说所有的JSX代码最后都会转换成React.createElement(...)Babel帮助我们完成了这个转换的过程。

  • 为什么React自定义组件需要大写首字母? 注意,babel在编译时会判断JSX中组件的首字母,当首字母为小写时,其被认定为原生DOM标签,createElement的第一个变量被编译为字符串;当首字母为大写时,其被认定为自定义组件,createElement的第一个变量被编译为对象;
has-addons" href="/tags/JQuery/">JQuery1
JS17
LC8
React1
TCP1
css1
ejs4
express4
http1
mongoDB4
nodejs4
react17
url过程1
分布式数据库1
易错5
闲谈1
面试2