createFactory
createFactory
permite que você crie uma função que produz elementos React de um determinado tipo.
const factory = createFactory(type)
Referência
createFactory(type)
Chame createFactory(type)
para criar uma função de fábrica que produz elementos React de um dado type
.
import { createFactory } from 'react';
const button = createFactory('button');
Então você pode usá-la para criar elementos React sem JSX:
export default function App() {
return button({
onClick: () => {
alert('Clicado!')
}
}, 'Clique em mim');
}
Parâmetros
type
: O argumentotype
deve ser um tipo de componente React válido. Por exemplo, pode ser uma string de nome de tag (como'div'
ou'span'
), ou um componente React (uma função, uma classe ou um componente especial comoFragment
).
Retorna
Retorna uma função de fábrica. Essa função de fábrica recebe um objeto props
como o primeiro argumento, seguido por uma lista de argumentos ...children
, e retorna um elemento React com o dado type
, props
e children
.
Uso
Criando elementos React com uma fábrica
Embora a maioria dos projetos React use JSX para descrever a interface do usuário, JSX não é obrigatório. No passado, createFactory
era uma das maneiras de descrever a interface do usuário sem JSX.
Chame createFactory
para criar uma função de fábrica para um tipo de elemento específico como 'button'
:
import { createFactory } from 'react';
const button = createFactory('button');
Chamar essa função de fábrica produzirá elementos React com os props e children que você forneceu:
import { createFactory } from 'react'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Clicado!') } }, 'Clique em mim'); }
Esta é a forma como createFactory
era usado como uma alternativa ao JSX. No entanto, createFactory
está obsoleto, e você não deve chamar createFactory
em nenhum novo código. Veja como migrar para fora de createFactory
abaixo.
Alternativas
Copiando createFactory
para o seu projeto
Se o seu projeto tem muitas chamadas de createFactory
, copie esta implementação de createFactory.js
para o seu projeto:
import { createFactory } from './createFactory.js'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Clicado!') } }, 'Clique em mim'); }
Isso permite que você mantenha todo o seu código inalterado, exceto pelas importações.
Substituindo createFactory
por createElement
Se você tiver algumas chamadas de createFactory
que não se importa em portar manualmente, e você não quiser usar JSX, pode substituir cada chamada de uma função de fábrica por uma chamada de createElement
. Por exemplo, você pode substituir este código:
import { createFactory } from 'react';
const button = createFactory('button');
export default function App() {
return button({
onClick: () => {
alert('Clicado!')
}
}, 'Clique em mim');
}
por este código:
import { createElement } from 'react';
export default function App() {
return createElement('button', {
onClick: () => {
alert('Clicado!')
}
}, 'Clique em mim');
}
Aqui está um exemplo completo de uso do React sem JSX:
import { createElement } from 'react'; export default function App() { return createElement('button', { onClick: () => { alert('Clicado!') } }, 'Clique em mim'); }
Substituindo createFactory
por JSX
Finalmente, você pode usar JSX em vez de createFactory
. Esta é a forma mais comum de usar o React:
export default function App() { return ( <button onClick={() => { alert('Clicado!'); }}> Clique em mim </button> ); };