비공식 사이트. 24.12.31. 폐쇄예정
공식사이트 바로가기

isValidElement checks whether a value is a React element.isValidElement는 값이 React 엘리먼트인지 확인합니다.

const isElement = isValidElement(value)

Reference참조

isValidElement(value)

Call isValidElement(value) to check whether value is a React element. 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

See more examples below. 아래에서 더 많은 예시를 확인하세요.

Parameters매개변수

  • value: The value you want to check. It can be any a value of any type. value: 확인하려는 value입니다. 모든 유형의 값이 될 수 있습니다.

Returns반환값

isValidElement returns true if the value is a React element. Otherwise, it returns false. isValidElementvalue가 React 엘리먼트인 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

Caveats주의사항

  • Only JSX tags and objects returned by createElement are considered to be React elements. For example, even though a number like 42 is a valid React node (and can be returned from a component), it is not a valid React element. Arrays and portals created with createPortal are also not considered to be React elements. JSX 태그createElement로부터 반환된 객체만이 React 엘리먼트로 간주됩니다. 예를 들어, 42와 같은 숫자는 유효한 React 노드이지만(또한 컴포넌트로부터 반환될 수도 있지만) 유효한 React 엘리먼트는 아닙니다. createPortal로 생성된 배열과 포털 역시 React 엘리먼트로 간주되지 않습니다.

Usage사용법

Checking if something is a React elementReact 엘리먼트인지 확인하기

Call isValidElement to check if some value is a React element. 어떤 값이 React 엘리먼트인지 확인하려면 isValidElement를 호출하세요.

React elements are: React 엘리먼트는 다음과 같습니다:

For React elements, isValidElement returns true: React 엘리먼트의 경우 isValidElementtrue를 반환합니다:

import { isValidElement, createElement } from 'react';

// ✅ JSX tags are React elements
// ✅ JSX 태그는 React 엘리먼트입니다.
console.log(isValidElement(<p />)); // true
console.log(isValidElement(<MyComponent />)); // true

// ✅ Values returned by createElement are React elements
// ✅ createElement로부터 반환된 값은 React 엘리먼트입니다.
console.log(isValidElement(createElement('p'))); // true
console.log(isValidElement(createElement(MyComponent))); // true

Any other values, such as strings, numbers, or arbitrary objects and arrays, are not React elements. 다른 값들, 예컨대 문자열, 숫자, 임의의 객체나 배열 등은 React 엘리먼트가 아닙니다.

For them, isValidElement returns false: 이들에 대해 isValidElementfalse를 반환합니다:

// ❌ 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

It is very uncommon to need isValidElement. It’s mostly useful if you’re calling another API that only accepts elements (like cloneElement does) and you want to avoid an error when your argument is not a React element. isValidElement가 필요한 경우는 매우 드뭅니다. 주로 오직 (cloneElement가 그런 것처럼) 엘리먼트만 허용하는 별도의 API에, React 엘리먼트가 아닌 다른 인수로 호출하면 발생하는 오류를 피하고자 할 때 유용합니다.

Unless you have some very specific reason to add an isValidElement check, you probably don’t need it. isValidElement 확인을 추가해야 할 특별한 이유가 없는 한, 이는 필요하지 않을 것입니다.

Deep Dive | 심층 탐구

React elements vs React nodesReact 엘리먼트 vs React 노드

When you write a component, you can return any kind of React node from it: 컴포넌트를 작성할 때, 컴포넌트에서 모든 종류의 React 노드를 반환할 수 있습니다:

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

A React node can be: React 노드는 다음과 같습니다:

  • A React element created like <div /> or createElement('div') <div /> 또는 createElement('div')로 생성된 React 엘리먼트

  • A portal created with createPortal createPortal로 생성한 포털

  • A string 문자열

  • A number 숫자

  • true, false, null, or undefined (which are not displayed) true, false, null, undefined (화면에 표시되지 않음)

  • An array of other React nodes 다른 React 노드로 구성된 배열

Note isValidElement checks whether the argument is a React element, not whether it’s a React node. For example, 42 is not a valid React element. However, it is a perfectly valid React node: isValidElement는 인수가 React 엘리먼트인지를 확인할 뿐, React 노드인지 여부를 확인하는 것은 아니라는 점에 주의하세요. 예를 들어, 42는 React 엘리먼트는 아니지만, 완전히 유효한 React 노드입니다:

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

This is why you shouldn’t use isValidElement as a way to check whether something can be rendered. 그렇기 때문에 렌더링할 수 있는지 여부를 확인하는 목적으로 isValidElement를 사용해서는 안 됩니다.