isValidElement γ―ε€€γŒ React 要素 (React element) γ§γ‚γ‚‹γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?�します。

const isElement = isValidElement(value)

γƒͺフゑレンス

isValidElement(value)

isValidElement(value) を呼び出して、value が React θ¦η΄ γ§γ‚γ‚‹γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?�します。

import { isValidElement, createElement } from 'react';

// βœ… React elements
console.log(isValidElement(<p />)); // true
console.log(isValidElement(createElement('p'))); // true

// ❌ Not React elements
console.log(isValidElement(25)); // false
console.log(isValidElement('Hello')); // false
console.log(isValidElement({ age: 42 })); // false

さらに例を見る

εΌ•ζ•°

  • value: 刀�?�対豑�?倀。任意�?εž‹οΏ½?ε€€γ‚’ζŒ‡οΏ½?�できます。

θΏ”γ‚Šε€€

isValidElement は value が React θ¦η΄ γ§γ‚γ‚Œγ° true γ‚’θΏ”γ—γΎγ™γ€‚γγ‚Œδ»₯ε€–οΏ½?場合は false を返します。

注意点

  • React 要素と見γͺγ•γ‚Œγ‚‹οΏ½?は、JSX タグと、createElement γ«γ‚ˆγ£γ¦θΏ”γ•γ‚Œγ‚‹γ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆγ γ‘γ§γ™γ€‚δΎ‹γˆγ°γ€42 οΏ½?γ‚ˆγ†γͺζ•°ε€€γ―ζœ‰εŠΉγͺ React γƒŽγƒΌγƒ‰ (node) γ§γ―γ‚γ‚ŠγΎγ™οΌˆγ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‹γ‚‰θΏ”γ™γ“γ¨γŒγ§γγ‚‹γŸγ‚οΌ‰γŒγ€ζœ‰εŠΉγͺ React θ¦η΄ γ§γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚ι…εˆ—γ‚„γ€createPortal γ§δ½œζˆγ•γ‚ŒγŸγƒγƒΌγ‚Ώγƒ«γ‚‚γ€React 要素とは見γͺγ•γ‚ŒγΎγ›γ‚“γ€‚

使用法

ε€€γŒ React θ¦η΄ γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?�する

isValidElement γ‚’ε‘Όγ³ε‡Ίγ—γ¦γ€γ‚γ‚‹ε€€γŒ React θ¦η΄ γ§γ‚γ‚‹γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?�します。

React 要素とは、δ»₯δΈ‹οΏ½?γ‚ˆγ†γͺγ‚‚οΏ½?です。

  • JSX γ‚Ώγ‚°γ‚’ζ›Έγγ“γ¨γ«γ‚ˆγ£γ¦η”Ÿζˆγ•γ‚Œγ‚‹ε€€
  • createElement γ‚’ε‘Όγ³ε‡Ίγ™γ“γ¨γ«γ‚ˆγ£γ¦η”Ÿζˆγ•γ‚Œγ‚‹ε€€

React 要素に対しては、isValidElement は true を返します。

import { isValidElement, createElement } from 'react';

// βœ… JSX tags are React elements
console.log(isValidElement(<p />)); // true
console.log(isValidElement(<MyComponent />)); // true

// βœ… Values returned by createElement are React elements
console.log(isValidElement(createElement('p'))); // true
console.log(isValidElement(createElement(MyComponent))); // true

ζ–‡ε­—εˆ—γ€ζ•°ε€€γ€γΎγŸγ―δ»»ζ„οΏ½?γ‚ͺγƒ–γ‚Έγ‚§γ‚―γƒˆγ‚„ι…εˆ—γͺど�?δ»–οΏ½?倀は、React θ¦η΄ γ§γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚

γγ‚Œγ‚‰γ«ε―Ύγ—γ¦γ―γ€isValidElement は false を返します。

// ❌ These are *not* React elements
console.log(isValidElement(null)); // false
console.log(isValidElement(25)); // false
console.log(isValidElement('Hello')); // false
console.log(isValidElement({ age: 42 })); // false
console.log(isValidElement([<div />, <div />])); // false
console.log(isValidElement(MyComponent)); // false

isValidElement γŒεΏ…θ¦γ¨γͺγ‚‹γ“γ¨γ―ιžεΈΈγ«η¨€γ§γ™γ€‚γ“γ‚ŒγŒδΈ»γ«ε½Ήη«‹γ€οΏ½?は、要素�?みを受けε…₯γ‚Œγ‚‹δ»–οΏ½? APIοΌˆδΎ‹γˆγ° cloneElement γŒγγ†γ§γ™οΌ‰γ‚’ε‘Όγ³ε‡Ίγ—γ¦γŠγ‚Šγ€εΌ•ζ•°γŒ React 要素でγͺγ„γ“γ¨γ«γ‚ˆγ‚‹γ‚¨γƒ©γƒΌγ‚’ιΏγ‘γŸγ„ε ΄εˆγ§γ™γ€‚

isValidElement οΏ½?γƒγ‚§γƒƒγ‚―γ‚’θΏ½εŠ γ™γ‚‹γŸγ‚οΏ½?η‰ΉοΏ½?οΏ½οΏ½?η†η”±γŒγͺγ„ι™γ‚Šγ€γŠγγ‚‰γγ“γ‚Œγ―εΏ…θ¦γ‚γ‚ŠγΎγ›γ‚“γ€‚

さらに深くηŸ₯γ‚‹

Reactγ€Œθ¦η΄ γ€γ¨ Reactγ€ŒγƒŽγƒΌγƒ‰γ€

γ‚³γƒ³γƒγƒΌγƒγƒ³γƒˆγ‚’ζ›Έγγ¨γγ€γγ“γ‹γ‚‰γ―δ»»ζ„οΏ½? React γƒŽγƒΌγƒ‰ γ‚’θΏ”γ™γ“γ¨γŒγ§γγΎγ™γ€‚

function MyComponent() {
// ... you can return any React node ...
}

React γƒŽγƒΌγƒ‰γ¨γ―γ€δ»₯δΈ‹οΏ½?γ‚ˆγ†γͺγ‚‚οΏ½?です。

  • <div /> γ‚„ createElement('div') οΏ½?γ‚ˆγ†γ«γ—γ¦δ½œζˆγ•γ‚ŒγŸ React 要素
  • createPortal γ§δ½œζˆγ•γ‚ŒγŸγƒγƒΌγ‚Ώγƒ«
  • ζ–‡ε­—εˆ—
  • ζ•°ε€€
  • true, false, null, undefinedοΌˆγ“γ‚Œγ‚‰γ―θ‘¨η€Ίγ•γ‚ŒγΎγ›γ‚“οΌ‰
  • δ»–οΏ½? React γƒŽγƒΌγƒ‰οΏ½?ι…εˆ—

isValidElement γ―εΌ•ζ•°γŒ React θ¦η΄ γ§γ‚γ‚‹γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?οΏ½γ—γΎγ™γŒγ€γγ‚ŒγŒ React γƒŽγƒΌγƒ‰γ§γ‚γ‚‹γ‹γ©γ†γ‹γ‚’εˆ€οΏ½?οΏ½γ™γ‚‹γ‚γ‘γ§γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚δΎ‹γˆγ°γ€42 γ―ζœ‰εŠΉγͺ React θ¦η΄ γ§γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚γ—γ‹γ—γ€γ“γ‚Œγ―οΏ½?οΏ½ε…¨γ«ζœ‰εŠΉγͺ React γƒŽγƒΌγƒ‰γ§γ™γ€‚

function MyComponent() {
return 42; // It's ok to return a number from component
}

γ—γŸγŒγ£γ¦γ€δ½•γ‹γŒγƒ¬γƒ³γƒ€γƒΌγ§γγ‚‹γ‹γ©γ†γ‹γ‚’γƒγ‚§γƒƒγ‚―γ™γ‚‹ζ–Ήζ³•γ¨γ—γ¦γ€isValidElement γ‚’δ½Ώγ†γΉγγ§γ―γ‚γ‚ŠγΎγ›γ‚“γ€‚