createFactory
createFactory
te permite crear una función que produce elementos React de un tipo dado.
const factory = createFactory(type)
Referencia
createFactory(type)
Llama a createFactory(type)
para crear una función fábrica que produzca elementos React de un type
dado.
import { createFactory } from 'react';
const button = createFactory('button');
Luego puedes usarla para crear elementos React sin JSX:
export default function App() {
return button({
onClick: () => {
alert('¡Hiciste clic!')
}
}, 'Hazme clic');
}
Parámetros
type
: El argumentotype
debe ser un tipo de componente React válido. Por ejemplo, puede ser un string de nombre de etiqueta (como'div'
o'span'
), o un componente React (una función, una clase, o un componente especial comoFragment
).
Devuelve
Devuelve una función fábrica. Esa función fábrica recibe un objeto props
como primer argumento, seguido de una lista de argumentos ...hijos
, y devuelve un elemento React con el type
, props
e hijos
dados.
Uso
Creación de elementos React con una fábrica
Aunque la mayoría de los proyectos React usan JSX para describir la interfaz de usuario, JSX no es necesario. En el pasado, createFactory
solía ser una de las formas de describir la interfaz de usuario sin JSX.
Llama a createFactory
para crear una función fábrica para un tipo de elemento específico como 'button'
:
import { createFactory } from 'react';
const button = createFactory('button');
Llamar a esa función fábrica producirá elementos React con las props e hijos que hayas proporcionado:
import { createFactory } from 'react'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('¡Hiciste clic!') } }, 'Hazme clic'); }
Así es como se usaba createFactory
como alternativa a JSX. Sin embargo, createFactory
está obsoleta, y no deberías llamar a createFactory
en ningún código nuevo. Ve cómo migrar de createFactory
más abajo.
Alternativas
Copiando createFactory
en tu proyecto
Si tu proyecto tiene muchas llamadas a createFactory
, copia esta implementación createFactory.js
en tu proyecto:
import { createFactory } from './createFactory.js'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('¡Hiciste clic!') } }, 'Hazme clic'); }
Esto te permite mantener todo tu código sin cambios excepto las importaciones.
Reemplazar createFactory
con createElement
Si tienes algunas llamadas a createFactory
que no te importa portar manualmente, y no quieres usar JSX, puedes reemplazar cada llamada a una función fábrica con una llamada a createElement
. Por ejemplo, puedes reemplazar este código:
import { createFactory } from 'react';
const button = createFactory('button');
export default function App() {
return button({
onClick: () => {
alert('¡Hiciste clic!')
}
}, 'Hazme clic');
}
con este código:
import { createElement } from 'react';
export default function App() {
return createElement('button', {
onClick: () => {
alert('¡Hiciste clic!')
}
}, 'Hazme clic');
}
Este es un ejemplo completo de uso de React sin JSX:
import { createElement } from 'react'; export default function App() { return createElement('button', { onClick: () => { alert('¡Hiciste clic!') } }, 'Hazme clic'); }
Reemplazar createFactory
con JSX
Finalmente, puedes usar JSX en lugar de createFactory
. Esta es la forma más común de usar React:
export default function App() { return ( <button onClick={() => { alert('¡Hiciste clic!'); }}> Hazme clic </button> ); };