@babel/plugin-transform-react-constant-elements
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
该插件通过将 React 元素提升至最高作用域,减少不必要的重复实例化,从而加速协调过程并降低垃圾回收压力。
示例
输入
JSX
const Hr = () => {
return <hr className="hr" />;
};
const WithChildren = (props) => {
return <div className={props.className}>
<hr />
</div>;
}
输出
JSX
var _hr, _hr2;
const Hr = () => {
return _hr || (_hr = <hr className="hr" />);
};
const WithChildren = (props) => {
return <div className={props.className}>
{_hr2 || (_hr2 = <hr />)}
</div>;
}
降级情况
-
展开运算符
JSX<div {...foobar} /> -
Refs
JSX<div ref="foobar" />
<div ref={node => this.node = node} /> -
可变属性
JavaScript
<div style={{ width: 100 }} />
安装
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-react-constant-elements
yarn add --dev @babel/plugin-transform-react-constant-elements
pnpm add --save-dev @babel/plugin-transform-react-constant-elements
bun add --dev @babel/plugin-transform-react-constant-elements
用法
通过配置文件(推荐)
babel.config.json
{
"plugins": ["@babel/plugin-transform-react-constant-elements"]
}
配置选项
allowMutablePropsOnTags
Array<string>,默认为 []
如果您使用的特定库(如 react-intl)使用了对象属性,且您确认元素不会修改自身 props,可以允许在特定元素上使用可变对象。
这将跳过 Mutable Properties 降级情况。
babel.config.json
{
"plugins": [
[
"@babel/plugin-transform-react-constant-elements",
{ "allowMutablePropsOnTags": ["FormattedMessage"] }
]
]
}
提示
你可以在此处阅读更多关于配置插件选项的信息。
通过命令行
Shell
babel --plugins @babel/plugin-transform-react-constant-elements script.js
通过 Node API
JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-react-constant-elements"],
});