createFactory
createFactory
vous permet de créer une fonction qui produira ensuite des éléments React d’un type prédéfini.
const factory = createFactory(type)
Référence
createFactory(type)
Appelez createFactory(type)
pour créer une fonction factory qui produira ensuite des éléments React du type
passé.
import { createFactory } from 'react';
const button = createFactory('button');
Vous pouvez alors l’utiliser pour créer des éléments React sans recourir à JSX :
export default function App() {
return button({
onClick: () => {
alert('Cliqué !')
}
}, 'Cliquez ici');
}
Voir d’autres exemples ci-dessous.
Paramètres
type
: l’argumenttype
doit être un type de composant React valide. Par exemple, ce pourrait être un nom de balise (tel que'div'
ou'span'
) ou un composant React (une fonction, une classe ou un composant spécial comme unFragment
).
Valeur renvoyée
Renvoie une fonction factory. Cette fonction factory reçoit un objet props
comme premier argument, suivi par une liste d’arguments ...children
, et renvoie un élément React avec les type
, props
et children
passés.
Utilisation
Créer des éléments React avec une factory
Même si la majorité des projets React utilisent JSX pour décrire leurs interfaces utilisateurs (UI), JSX n’est pas obligatoire. Autrefois, une des manières de décrire l’UI sans recourir à JSX consistait à utiliser createFactory
.
Appelez createFactory
pour créer une fonction factory calée sur un type d’élément spécifique, par exemple la balise native 'button'
:
import { createFactory } from 'react';
const button = createFactory('button');
En appelant cette fonction factory, vous obtiendrez des éléments React avec les props et enfants que vous aurez fournis :
import { createFactory } from 'react'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Cliqué !') } }, 'Cliquez ici'); }
Voilà comment on utilisait createFactory
au lieu de JSX. Ceci dit, createFactory
est dépréciée, et vous ne devriez pas utiliser createFactory
dans du nouveau code. Découvrez ci-dessous comment retirer les appels à createFactory
de votre code.
Alternatives
Copier createFactory
dans votre projet
Si votre projet à de nombreux appels à createFactory
, copiez cette implémentation alternative createFactory.js
dans votre base de code :
import { createFactory } from './createFactory.js'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Cliqué !') } }, 'Cliquez ici'); }
Ça vous permettra de conserver votre code intact, à l’exception des imports.
Remplacer createFactory
par createElement
Si vous n’avez que quelques appels à createFactory
et que vous voulez bien les migrer manuellement, sans pour autant recourir à JSX, vous pouvez remplacer chaque appel à une fonction factory par un appel à createElement
. Par exemple, vous pouvez remplacer ce code :
import { createFactory } from 'react';
const button = createFactory('button');
export default function App() {
return button({
onClick: () => {
alert('Cliqué !')
}
}, 'Cliquez ici ');
}
…par ce code :
import { createElement } from 'react';
export default function App() {
return createElement('button', {
onClick: () => {
alert('Cliqué !')
}
}, 'Cliquez ici');
}
Voici un exemple complet d’utilisation de React sans JSX :
import { createElement } from 'react'; export default function App() { return createElement('button', { onClick: () => { alert('Cliqué !') } }, 'Cliquez ici'); }
Remplacer createFactory
par JSX
Pour finir, vous pouvez utiliser JSX plutôt que createFactory
. C’est la façon la plus courante d’utiliser React :
export default function App() { return ( <button onClick={() => { alert('Cliqué !'); }}> Cliquez ici </button> ); };