isValidElement
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)); // falseisValidElement γεΏ
θ¦γ¨γͺγγγ¨γ―ιεΈΈγ«η¨γ§γγγγγδΈ»γ«ε½Ήη«γ€οΏ½?γ―γθ¦η΄ οΏ½?γΏγεγε
₯γγδ»οΏ½? APIοΌδΎγγ° cloneElement γγγγ§γοΌγεΌγ³εΊγγ¦γγγεΌζ°γ React θ¦η΄ γ§γͺγγγ¨γ«γγγ¨γ©γΌγιΏγγγε ΄εγ§γγ
isValidElement οΏ½?γγ§γγ―γθΏ½ε γγγγοΏ½?ηΉοΏ½?οΏ½οΏ½?ηη±γγͺγιγγγγγγγγγ―εΏ
θ¦γγγΎγγγ
γγγ«ζ·±γη₯γ
γ³γ³γγΌγγ³γγζΈγγ¨γγγγγγγ―δ»»ζοΏ½? 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 γδ½ΏγγΉγγ§γ―γγγΎγγγ