@babel/plugin-transform-react-constant-elements
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Este plugin puede acelerar la reconciliación y reducir la presión del recolector de basura al elevar los elementos de React al ámbito más alto posible, evitando múltiples reinstanciaciones innecesarias.
Ejemplo
Entrada
const Hr = () => {
return <hr className="hr" />;
};
const WithChildren = (props) => {
return <div className={props.className}>
<hr />
</div>;
}
Salida
var _hr, _hr2;
const Hr = () => {
return _hr || (_hr = <hr className="hr" />);
};
const WithChildren = (props) => {
return <div className={props.className}>
{_hr2 || (_hr2 = <hr />)}
</div>;
}
Desoptimizaciones
-
Operador de propagación (Spread)
JSX<div {...foobar} /> -
Referencias (Refs)
JSX<div ref="foobar" />
<div ref={node => this.node = node} /> -
Propiedades mutables
Consulta https://github.com/facebook/react/issues/3226 para más información
<div style={{ width: 100 }} />
Instalación
- 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
Uso
Mediante un archivo de configuración (Recomendado)
{
"plugins": ["@babel/plugin-transform-react-constant-elements"]
}
Opciones
allowMutablePropsOnTags
Array<string>, valor predeterminado: []
Si estás usando una biblioteca específica (como react-intl) que utiliza propiedades de objeto, y estás seguro de que el elemento no modificará sus propias props, puedes permitir objetos para elementos específicos.
Esto omitirá la desoptimización de Mutable Properties.
{
"plugins": [
[
"@babel/plugin-transform-react-constant-elements",
{ "allowMutablePropsOnTags": ["FormattedMessage"] }
]
]
}
Puedes leer más sobre cómo configurar opciones de plugins aquí
Mediante la CLI
babel --plugins @babel/plugin-transform-react-constant-elements script.js
Mediante la API de Node
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-react-constant-elements"],
});