当从组件返回一个 React 元素时,是否只在顶级标签上调用了一个 React.createElement() ?
When a React element is returned from a component, is just one React.createElement() called on the top-level tag?
如果我有任何错误,请纠正我。
一个组件 return 是一个 React element/object。
它通过 运行 React.createElement() 实现。
对于 JSX,它会隐式地执行此操作。
您也可以不使用 JSX 编写它,只需显式使用 React.createElement() 代码。
但我想弄清楚 returned element/object 是否仅在组件 return 中的单个顶级标记上调用 React.createElement()代码。
或者如果它在顶级父标签及其每个子标签上调用 React.createElement()。
最终,无论哪种方式,我都假设 returned element/object 放在父组件的 returned element/object 中。
但是,当组件的 return 中有多个标签时,到底发生了什么?多个 React.createElement() 调用?还是只有一个?
因为在 React 文档中,我能找到的两个示例都只有一个标签,并且使用以下代码举例说明了一个显式元素 return:
const element = React.createElement(
"h1",
{ className: "greeting" },
"Hello, world!"
);
// 等价于
const element = (
// JSX
<h1 className="greeting">
Hello, world!
</h1>
);
// 只是 returning 元素
// 对比 return 使用多个标签 element/object
const element = (
// JSX
<div>
<h1 className="greeting">
Hello, world!
</h1>
<p> lalalalala </p>
</div>
);
// 现在是否对所有三个标签进行多次 React.createElement() 调用?或者只是顶级?
这就是你最后一个例子被 babel 翻译的方式
var element = // JSX
React.createElement("div", null, React.createElement("h1", {
className: "greeting"
}, "Hello, world!"), React.createElement("p", null, " lalalalala "));
如果我有任何错误,请纠正我。
一个组件 return 是一个 React element/object。
它通过 运行 React.createElement() 实现。
对于 JSX,它会隐式地执行此操作。
您也可以不使用 JSX 编写它,只需显式使用 React.createElement() 代码。
但我想弄清楚 returned element/object 是否仅在组件 return 中的单个顶级标记上调用 React.createElement()代码。
或者如果它在顶级父标签及其每个子标签上调用 React.createElement()。
最终,无论哪种方式,我都假设 returned element/object 放在父组件的 returned element/object 中。
但是,当组件的 return 中有多个标签时,到底发生了什么?多个 React.createElement() 调用?还是只有一个?
因为在 React 文档中,我能找到的两个示例都只有一个标签,并且使用以下代码举例说明了一个显式元素 return:
const element = React.createElement(
"h1",
{ className: "greeting" },
"Hello, world!"
);
// 等价于
const element = (
// JSX
<h1 className="greeting">
Hello, world!
</h1>
);
// 只是 returning 元素
// 对比 return 使用多个标签 element/object
const element = (
// JSX
<div>
<h1 className="greeting">
Hello, world!
</h1>
<p> lalalalala </p>
</div>
);
// 现在是否对所有三个标签进行多次 React.createElement() 调用?或者只是顶级?
这就是你最后一个例子被 babel 翻译的方式
var element = // JSX
React.createElement("div", null, React.createElement("h1", {
className: "greeting"
}, "Hello, world!"), React.createElement("p", null, " lalalalala "));