createFactory
createFactory γ―γζοΏ½?οΏ½γγγΏγ€γοΏ½? React θ¦η΄ γηζγγγγοΏ½?ι’ζ°γδ½ζγγΎγγ
const factory = createFactory(type)γͺγγ‘γ¬γ³γΉ
createFactory(type)
createFactory(type) γεΌγ³εΊγγ¦γζοΏ½?οΏ½γγ type οΏ½? React θ¦η΄ γηζγγγγοΏ½?γγ‘γ―γγͺι’ζ°γδ½ζγγΎγγ
import { createFactory } from 'react';
const button = createFactory('button');γοΏ½?εΎγJSX γδ½Ώγγγ« React θ¦η΄ γδ½ζγγγγ¨γγ§γγΎγγ
export default function App() {
return button({
onClick: () => {
alert('Clicked!')
}
}, 'Click me');
}εΌζ°
type:typeεΌζ°γ―ζεΉγͺ React οΏ½?γ³γ³γγΌγγ³γγΏγ€γγ§γͺγγγ°γͺγγΎγγγδΎγγ°γγΏγ°εοΏ½?ζεεοΌ'div'γ'span'οΌγγReact γ³γ³γγΌγγ³γοΌι’ζ°γγ―γ©γΉγγΎγγ―FragmentοΏ½?γγγͺηΉε₯γͺγ³γ³γγΌγγ³γοΌγθ©²ε½γγΎγγ
θΏγε€
γγ‘γ―γγͺι’ζ°γθΏγγΎγγγοΏ½?γγ‘γ―γγͺι’ζ°γ―γζεοΏ½?εΌζ°γ¨γγ¦ props γͺγγΈγ§γ―γγεγεγγγοΏ½?εΎγ« ...children εΌζ°οΏ½?γͺγΉγγεγεγγζοΏ½?οΏ½γγ typeγpropsγchildren γζγ£γ React θ¦η΄ γθΏγγΎγγ
δ½Ώη¨ζ³
γγ‘γ―γγͺι’ζ°γδ½Ώγ£γ¦ React θ¦η΄ γδ½ζγγ
γ»γ¨γγ©οΏ½? React γγγΈγ§γ―γγ§γ―γ¦γΌγΆγ€γ³γΏγΌγγ§γΌγΉγθ¨θΏ°γγγγγ« JSX γδ½Ώη¨γγ¦γγΎγγγJSX γ―εΏ
ι γ§γ―γγγΎγγγιε»γ«γ― createFactory γγJSX γδ½Ώγγγ«γ¦γΌγΆγ€γ³γΏγΌγγ§γΌγΉγθ¨θΏ°γγγγοΏ½?ζΉζ³οΏ½?γ²γ¨γ€γ§γγγ
createFactory γεΌγ³εΊγγ¦γ'button' οΏ½?γγγͺηΉοΏ½?οΏ½οΏ½?θ¦η΄ γΏγ€γοΏ½?γγ‘γ―γγͺι’ζ°γδ½ζγγΎγγ
import { createFactory } from 'react';
const button = createFactory('button');γοΏ½?γγ‘γ―γγͺι’ζ°γεΌγ³εΊγγ¨γζοΏ½?οΏ½γγ props γ¨ children γζγ€ React θ¦η΄ γηζγγγΎγγ
import { createFactory } from 'react'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Clicked!') } }, 'Click me'); }
γοΏ½?γγγ«γγ¦ createFactory γ JSX οΏ½?代ζΏγ¨γγ¦δ½Ώη¨γγγ¦γγΎγγγγγγγcreateFactory γ―ιζ¨ε₯¨γ§γγγζ°γγγ³γΌγγ§γ― createFactory γεΌγ³εΊγγΉγγ§γ―γγγΎγγγcreateFactory γγη§»θ‘γγζΉζ³γ«γ€γγ¦γ―δΈθ¨γγ覧γγ γγγ
代ζΏζοΏ½?οΏ½
createFactory γγγγΈγ§γ―γγ«γ³γγΌγγ
γγγΈγ§γ―γε
γ§ε€γοΏ½? createFactory εΌγ³εΊγγγγε ΄εγ―γγοΏ½? createFactory.js οΏ½?οΏ½?οΏ½θ£
γγγγΈγ§γ―γγ«γ³γγΌγγΎγοΌ
import { createFactory } from './createFactory.js'; const button = createFactory('button'); export default function App() { return button({ onClick: () => { alert('Clicked!') } }, 'Click me'); }
γγγ«γγγγ€γ³γγΌγγι€γγγΉγ¦οΏ½?γ³γΌγγε€ζ΄γγγ«δΏζγ§γγΎγγ
createFactory γ createElement γ«οΏ½?γζγγ
ε°ζ°οΏ½? createFactory οΏ½?εΌγ³εΊγγγγζεγ§η§»ζ€γγ¦γζ§γγγγγ€ JSX γδ½Ώη¨γγγγͺγγγ¨γγε ΄εγγγ‘γ―γγͺι’ζ°οΏ½?γγΉγ¦οΏ½?εΌγ³εΊγγ createElement οΏ½?εΌγ³εΊγγ«οΏ½?γζγγγγ¨γγ§γγΎγγδΎγγ°δ»₯δΈοΏ½?γ³γΌγγ―οΌ
import { createFactory } from 'react';
const button = createFactory('button');
export default function App() {
return button({
onClick: () => {
alert('Clicked!')
}
}, 'Click me');
}δ»₯δΈοΏ½?γ³γΌγγ«οΏ½?γζγγε―θ½γ§γοΌ
import { createElement } from 'react';
export default function App() {
return createElement('button', {
onClick: () => {
alert('Clicked!')
}
}, 'Click me');
}δ»₯δΈγ―γJSX γδ½Ώη¨γγγ« React γδ½Ώη¨γγοΏ½?οΏ½ε ¨γͺδΎγ§γγ
import { createElement } from 'react'; export default function App() { return createElement('button', { onClick: () => { alert('Clicked!') } }, 'Click me'); }
createFactory γ JSX γ«οΏ½?γζγγ
ζεΎγ«γcreateFactory οΏ½?代γγγ« JSX γδ½Ώη¨γγγγ¨γγ§γγΎγγγγγ React γδ½Ώη¨γγζγδΈθ¬ηγͺζΉζ³γ§γγ
export default function App() { return ( <button onClick={() => { alert('Clicked!'); }}> Click me </button> ); };