javascript - Babel JS 编译器如何将用户定义的组件语法 (JSX) 转换为常规函数调用?
问题描述
考虑下面的代码。
import React from "react";
import ReactDOM from "react-dom";
const element = <div>Div in Component</div>
function DivComponent() {
return element
};
const rootElement = document.getElementById("root");
ReactDOM.render(<DivComponent />, rootElement);
问题 1:Babel
如何知道如何将JSX语法转换为常规函数调用,然后返回,然后HTML 标记编译为...<DivComponent/>
DivComponent()
element
div
React.createElement("div", null, "Div in Component");
在浏览器中呈现。它是否使用正则表达式或其他技术来替换 JSX 语法?
QUESTION 2:
Babel 如何区分有效的 HTML 标签<div>
和用户自定义标签<DivComponent/>
?
据我了解,有效的 HTML 标记<div>
被编译为React.createElement("div", null, "Div in Component");
,然后用户定义的组件标记(JSX)<DivComponent/>
被编译为DivComponent()
.
解决方案
推荐阅读
- python - 在表格中按顺序拖动行 python selenium
- python - Python / 电子邮件处理:如何获取附件的创建日期?
- javascript - 将多个 observable 合并到一个 RxJS 流中
- react-native - 在 React-Native FlatList onScroll 事件没有被调用
- javascript - 重定向到子域
- python - 使用 pandas 映射多列中的键
- python - 对保持多个索引匹配的熊猫数据透视表进行排序
- xpath - 使用 contains(@tag name, "value") 时,Xpath 对标签名称不区分大小写
- macos - 如何在 MacOS 上安装 libEGL.dylib?
- python - Pycharm Linux“无法打开本地终端”