Deprecated

こ�? API は、将ζ₯οΏ½? React οΏ½?γƒ‘γ‚Έγƒ£γƒΌγƒγƒΌγ‚Έγƒ§γƒ³γ§ε‰Šι™€γ•γ‚Œγ‚‹δΊˆοΏ½?�です。代替手�?�に぀いてはこけらをご覧ください。

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>
  );
};

落とし穴

ζ—’ε­˜οΏ½?コードには、'button' οΏ½?γ‚ˆγ†γͺοΏ½?�数ではγͺく倉数を用いて type γ‚’ζŒ‡οΏ½?�するも�?γŒγ‚γ‚‹γ‹γ‚‚γ—γ‚ŒγΎγ›γ‚“γ€‚

function Heading({ isSubheading, ...props }) {
const type = isSubheading ? 'h2' : 'h1';
const factory = createFactory(type);
return factory(props);
}

JSX γ§εŒγ˜γ“γ¨γ‚’γ™γ‚‹ε ΄εˆγ€ε€‰ζ•°οΏ½?名前を Type οΏ½?γ‚ˆγ†γ«ε€§ζ–‡ε­—γ§ε§‹γΎγ‚‹γ‚ˆγ†γ«ε€‰ζ›΄γ™γ‚‹εΏ…θ¦γŒγ‚γ‚ŠγΎγ™γ€‚

function Heading({ isSubheading, ...props }) {
const Type = isSubheading ? 'h2' : 'h1';
return <Type {...props} />;
}

さもγͺいと、React は <type> γ‚’οΌˆε°ζ–‡ε­—γͺοΏ½?で)硄み込み�? HTML γ‚Ώγ‚°γ¨θ§£ι‡ˆγ—γ¦γ—γΎγ„γΎγ™γ€‚