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 ใ‚’ไฝฟใ†ในใใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚