Deprecated

こ�? API γ―γ€δ»ŠεΎŒοΏ½?パジャーバージョン�? React γ§ε‰Šι™€γ•γ‚Œγ‚‹δΊˆοΏ½?�です。

React 18 では、render は createRoot に�?γζ›γˆγ‚‰γ‚ŒγΎγ—γŸγ€‚React 18 で render を使用すると、をプγƒͺは React 17 γ‚’οΏ½?οΏ½θ‘Œγ—γ¦γ„γ‚‹γ‹οΏ½?γ‚ˆγ†γͺζŒ―γ‚‹θˆžγ„γ«γͺると�?θ­¦ε‘ŠγŒθ‘¨η€Ίγ•γ‚ŒγΎγ™γ€‚θ©³η΄°γ―γ“γ‘γ‚‰γ‚’γ”θ¦§γγ γ•γ„γ€‚

render は、ブラウア�? DOM γƒŽγƒΌγƒ‰γ« JSXοΌˆβ€œReact γƒŽγƒΌγƒ‰β€οΌ‰γ‚’γƒ¬γƒ³γƒ€γƒΌγ—γΎγ™γ€‚

render(reactNode, domNode, callback?)

γƒͺフゑレンス

render(reactNode, domNode, callback?)

render を呼び出して、ブラウア�? DOM 要素に React γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’θ‘¨η€Ίγ—γΎγ™γ€‚

import { render } from 'react-dom';

const domNode = document.getElementById('root');
render(<App />, domNode);

React は domNode 内に <App /> を葨瀺し、そ�?内部�? DOM οΏ½?οΏ½?οΏ½η†γ‚’θ‘Œγ„γΎγ™γ€‚

React で�?οΏ½ε…¨γ«ζ§‹η―‰γ•γ‚ŒγŸγ‚’γƒ—γƒͺγ«γ―γ€γƒ«γƒΌγƒˆγ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’εΌ•ζ•°γ«γ—γŸ render ε‘Όγ³ε‡Ίγ—γŒι€šεΈΈ 1 ぀�?γΏε­˜εœ¨γ—γΎγ™γ€‚γƒšγƒΌγ‚Έε†…γ« React γ‚’γ€Œζ•£γ‚Šγ°γ‚γ¦γ€δ½Ώη”¨γ™γ‚‹γƒšγƒΌγ‚ΈοΏ½?ε ΄εˆγ―γ€εΏ…θ¦γͺだけ render γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γŒγ§γγΎγ™γ€‚

さらに例を見る

εΌ•ζ•°

  • reactNode: θ‘¨η€Ίγ—γŸγ„ React γƒŽγƒΌγƒ‰γ€‚ι€šεΈΈγ― <App /> οΏ½?γ‚ˆγ†γͺ JSX γ§γ™γŒγ€createElement() γ§ζ§‹η―‰γ—γŸ React θ¦η΄ γ‚„γ€ζ–‡ε­—εˆ—γ€ζ•°ε€€γ€nullγ€γΎγŸγ― undefined を渑すこともできます。

  • domNode: DOM 要素。React γ―γ€ζΈ‘γ•γ‚ŒγŸ reactNode をこ�? DOM 要素内に葨瀺します。こ�?ηž¬ι–“γ‹γ‚‰γ€React は domNode ε†…οΏ½? DOM γ‚’οΏ½?�理し、React ツγƒͺγƒΌγŒε€‰ζ›΄γ•γ‚ŒγŸγ¨γγ«γγ‚Œγ‚’ζ›΄ζ–°γ™γ‚‹γ‚ˆγ†γ«γͺγ‚ŠγΎγ™γ€‚

  • 省η•₯可能 callback: ι–’ζ•°γ€‚ζΈ‘γ•γ‚ŒγŸε ΄εˆγ€React γ―γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγŒ DOM に配�?γ•γ‚ŒγŸεΎŒγ«γγ‚Œγ‚’ε‘Όγ³ε‡Ίγ—γΎγ™γ€‚

θΏ”γ‚Šε€€

render γ―ι€šεΈΈ null γ‚’θΏ”γ—γΎγ™γ€‚γŸγ γ—γ€ζΈ‘γ™ reactNode γŒγ‚―γƒ©γ‚Ήγ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆοΏ½?ε ΄εˆγ€γοΏ½?γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆοΏ½?むンスタンスを返します。

注意点

  • React 18 では、render は createRoot に�?γζ›γˆγ‚‰γ‚ŒγΎγ—γŸγ€‚React 18 δ»₯降では createRoot を使用してください。

  • render γ‚’εˆγ‚γ¦ε‘Όγ³ε‡Ίγ—γŸγ¨γγ€React は React γƒ«γƒΌγƒˆε†…οΏ½?ζ—’ε­˜οΏ½? HTML コンテンツをすべてクγƒͺをしてから、React γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’γƒ¬γƒ³γƒ€γƒΌγ—γΎγ™γ€‚domNode γŒγ‚΅γƒΌγƒδΈŠγ§γ‚γ‚‹γ„γ―γƒ“γƒ«γƒ‰δΈ­γ« React γ«γ‚ˆγ£γ¦η”Ÿζˆγ•γ‚ŒγŸ HTML γ‚’ε«γ‚“γ§γ„γ‚‹ε ΄εˆγ―γ€δ»£γ‚γ‚Šγ«ζ—’ε­˜οΏ½? HTML γ«γ‚€γƒ™γƒ³γƒˆγƒγƒ³γƒ‰γƒ©γ‚’γ‚’γ‚Ώγƒƒγƒγ§γγ‚‹ hydrate() を使用してください。

  • 同じ domNode に対して render γ‚’θ€‡ζ•°ε›žε‘Όγ³ε‡Ίγ™γ¨γ€React γ―ζœ€ζ–°οΏ½? JSX γ‚’εζ˜ γ™γ‚‹γŸγ‚γ«εΏ…θ¦γͺだけ�? DOM οΏ½?ζ›΄ζ–°γ‚’θ‘Œγ„γΎγ™γ€‚React γ―γ€ζΈ‘γ•γ‚ŒγŸ JSX γ‚’δ»₯ε‰γ«γƒ¬γƒ³γƒ€γƒΌγ—γŸγƒ„γƒͺγƒΌγ¨γ€Œγƒžγƒƒγƒγƒ³γ‚°γ€γ—γ¦γ€DOM οΏ½?ど�?ιƒ¨εˆ†γŒε†εˆ©η”¨γ§γγ€γ©οΏ½?ιƒ¨εˆ†γ‚’ε†δ½œζˆγ™γ‚‹εΏ…θ¦γŒγ‚γ‚‹οΏ½?かを決�?οΏ½γ—γΎγ™γ€‚εŒγ˜ domNode γ«ε―Ύγ—γ¦θ€‡ζ•°ε›ž render γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γ―γ€γƒ«γƒΌγƒˆγ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ§ set ι–’ζ•°γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γ«δΌΌγ¦γŠγ‚Šγ€React は不必要γͺ DOM ζ›΄ζ–°γ‚’ε›žιΏγ—γΎγ™γ€‚

  • γ‚’γƒ—γƒͺが�?�全に React γ§ζ§‹η―‰γ•γ‚Œγ¦γ„γ‚‹ε ΄εˆγ€γ‚’γƒ—γƒͺ内で render を呼び出す�?γ―ι€šεΈΈ 1 ε›žγ γ‘γ§γ™γ€‚οΌˆγƒ•γƒ¬γƒΌγƒ γƒ―γƒΌγ‚―γ‚’δ½Ώη”¨γ—γ¦γ„γ‚‹ε ΄εˆγ€γ“οΏ½?ε‘Όγ³ε‡Ίγ—γ―γƒ•γƒ¬γƒΌγƒ γƒ―γƒΌγ‚―γŒθ‘Œγ†γ‹γ‚‚γ—γ‚ŒγΎγ›γ‚“γ€‚οΌ‰DOM ツγƒͺγƒΌε†…οΏ½?γ€γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆοΏ½?子ではγͺいεˆ₯οΏ½?ιƒ¨εˆ†γ« JSX γ‚’γƒ¬γƒ³γƒ€γƒΌγ—γŸγ„ε ΄εˆοΌˆδΎ‹γˆγ°γƒ’γƒΌγƒ€γƒ«γ‚„γƒ„γƒΌγƒ«γƒγƒƒγƒ—οΌ‰γ€createRoot οΏ½?δ»£γ‚γ‚Šγ« createPortal を使用してください。


使用法

render を呼び出して、React γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’γƒ–γƒ©γ‚¦γ‚ΆοΏ½? DOM γƒŽγƒΌγƒ‰ε†…γ«θ‘¨η€Ίγ—γΎγ™γ€‚

import { render } from 'react-dom';
import App from './App.js';

render(<App />, document.getElementById('root'));

γƒ«γƒΌγƒˆγ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆοΏ½?レンダー

React で�?οΏ½ε…¨γ«ζ§‹η―‰γ•γ‚ŒγŸγ‚’γƒ—γƒͺγ§γ―ι€šεΈΈγ€β€œγƒ«γƒΌγƒˆβ€ γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’γƒ¬γƒ³γƒ€γƒΌγ™γ‚‹γŸγ‚γ«γ‚Ήγ‚ΏγƒΌγƒˆγ‚’γƒƒγƒ—ζ™‚γ«γ“γ‚Œγ‚’δΈ€εΊ¦γ γ‘θ‘Œγ„γΎγ™γ€‚

import './styles.css';
import { render } from 'react-dom';
import App from './App.js';

render(<App />, document.getElementById('root'));

ι€šεΈΈγ€render γ‚’ε†εΊ¦ε‘Όγ³ε‡Ίγ—γŸγ‚Šθ€‡ζ•°οΏ½?ε ΄ζ‰€γ§ε‘Όγ³ε‡Ίγ—γŸγ‚Šγ™γ‚‹εΏ…θ¦γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚γ“οΏ½?時点から、React はをプγƒͺケーション�? DOM γ‚’οΏ½?�理します。UI γ‚’ζ›΄ζ–°γ™γ‚‹γ«γ―γ€γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγŒ state を使用します。


耇数�?γƒ«γƒΌγƒˆοΏ½?レンダー

γƒšγƒΌγ‚ΈγŒοΏ½?�全には React γ§ζ§‹η―‰γ•γ‚Œγ¦γ„γͺγ„ε ΄εˆγ€React に�?οΏ½η†γ•γ›γŸγ„γƒˆγƒƒγƒ—γƒ¬γƒ™γƒ«οΏ½? UI γƒ‘γƒΌγƒ„γ«ε―Ύγ—γ¦γγ‚Œγžγ‚Œ render γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γŒγ§γγΎγ™γ€‚

import './styles.css';
import { render } from 'react-dom';
import { Comments, Navigation } from './Components.js';

render(
  <Navigation />,
  document.getElementById('navigation')
);

render(
  <Comments />,
  document.getElementById('comments')
);

γƒ¬γƒ³γƒ€γƒΌγ•γ‚ŒγŸγƒ„γƒͺーは unmountComponentAtNode() γ§η ΄ζ£„γ™γ‚‹γ“γ¨γŒγ§γγΎγ™γ€‚


γƒ¬γƒ³γƒ€γƒΌγ•γ‚ŒγŸγƒ„γƒͺγƒΌοΏ½?ζ›΄ζ–°

同じ DOM γƒŽγƒΌγƒ‰γ«ε―Ύγ—γ¦ render γ‚’θ€‡ζ•°ε›žε‘Όγ³ε‡Ίγ™γ“γ¨γŒγ§γγΎγ™γ€‚γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγƒ„γƒͺγƒΌοΏ½?ζ§‹ι€ γŒδ»₯ε‰γ«γƒ¬γƒ³γƒ€γƒΌγ•γ‚ŒγŸγ‚‚οΏ½?γ¨δΈ€θ‡΄γ—γ¦γ„γ‚Œγ°γ€React は state γ‚’δΏζŒγ—γΎγ™γ€‚δ»₯δΈ‹οΏ½?例でε…₯εŠ›γƒ•γ‚£γƒΌγƒ«γƒ‰γ«γ‚Ώγ‚€γƒ—γ§γγ‚‹γ“γ¨γ«η€οΏ½?γ—γ¦γγ γ•γ„γ€‚γ€γΎγ‚Šζ―Žη§’ render γŒηΉ°γ‚ŠθΏ”γ—ε‘Όγ³ε‡Ίγ•γ‚Œγ¦γ„γΎγ™γŒγ€ζ›΄ζ–°γ«γ‚ˆγ‚Š DOM γŒη ΄ε£Šγ•γ‚Œγ¦γ„γͺいということです。

import { render } from 'react-dom';
import './styles.css';
import App from './App.js';

let i = 0;
setInterval(() => {
  render(
    <App counter={i} />,
    document.getElementById('root')
  );
  i++;
}, 1000);

render γ‚’θ€‡ζ•°ε›žε‘Όγ³ε‡Ίγ™γ“γ¨γ―ζ»…ε€šγ«γ‚γ‚ŠγΎγ›γ‚“γ€‚ι€šεΈΈγ€δ»£γ‚γ‚Šγ«γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ§ state οΏ½?ζ›΄ζ–°γ‚’θ‘Œγ„γΎγ™γ€‚