@babel/plugin-transform-react-constant-elements
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Questo plugin può velocizzare la riconciliazione e ridurre la pressione della garbage collection elevando gli elementi React allo scope più esterno possibile, prevenendo così reinstanziazioni multiple non necessarie.
Esempio
In
const Hr = () => {
return <hr className="hr" />;
};
const WithChildren = (props) => {
return <div className={props.className}>
<hr />
</div>;
}
Out
var _hr, _hr2;
const Hr = () => {
return _hr || (_hr = <hr className="hr" />);
};
const WithChildren = (props) => {
return <div className={props.className}>
{_hr2 || (_hr2 = <hr />)}
</div>;
}
Deottimizzazioni
-
Operatore Spread
JSX<div {...foobar} /> -
Refs
JSX<div ref="foobar" />
<div ref={node => this.node = node} /> -
Proprietà Mutabili
Consulta https://github.com/facebook/react/issues/3226 per maggiori informazioni
<div style={{ width: 100 }} />
Installazione
- 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
Utilizzo
Con un file di configurazione (Consigliato)
{
"plugins": ["@babel/plugin-transform-react-constant-elements"]
}
Opzioni
allowMutablePropsOnTags
Array<string>, valore predefinito []
Se stai utilizzando una libreria specifica (come react-intl) che impiega proprietà di tipo oggetto, e sei certo che l'elemento non modificherà le proprie props, puoi consentire oggetti per elementi specifici.
Ciò permetterà di saltare la deottimizzazione Mutable Properties.
{
"plugins": [
[
"@babel/plugin-transform-react-constant-elements",
{ "allowMutablePropsOnTags": ["FormattedMessage"] }
]
]
}
Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui
Tramite CLI
babel --plugins @babel/plugin-transform-react-constant-elements script.js
Tramite Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-react-constant-elements"],
});