--- title: isValidElement translators: [서민택] --- `isValidElement` checks whether a value is a React element.`isValidElement`는 값이 React 엘리먼트인지 확인합니다. ```js const isElement = isValidElement(value) ``` --- ## Reference참조 {/*reference*/} ### `isValidElement(value)` {/*isvalidelement*/} Call `isValidElement(value)` to check whether `value` is a React element. `isValidElement(value)`를 호출하여 `value`가 React 엘리먼트인지 확인합니다. ```js import { isValidElement, createElement } from 'react'; // ✅ React elements console.log(isValidElement(

)); // 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.](#usage) [아래에서 더 많은 예시를 확인하세요.](#usage) #### Parameters매개변수 {/*parameters*/} * `value`: The `value` you want to check. It can be any a value of any type. `value`: 확인하려는 `value`입니다. 모든 유형의 값이 될 수 있습니다. #### Returns반환값 {/*returns*/} `isValidElement` returns `true` if the `value` is a React element. Otherwise, it returns `false`. `isValidElement`는 `value`가 React 엘리먼트인 경우 `true`를 반환합니다. 그렇지 않으면 `false`를 반환합니다. #### Caveats주의사항 {/*caveats*/} * **Only [JSX tags](/learn/writing-markup-with-jsx) and objects returned by [`createElement`](/reference/react/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`](/reference/react-dom/createPortal) are also *not* considered to be React elements. **[JSX 태그](https://react.dev/learn/writing-markup-with-jsx) 및 [`createElement`](https://react.dev/reference/react/createElement)로부터 반환된 객체만이 React 엘리먼트로 간주됩니다.** 예를 들어 `42`와 같은 숫자는 유효한 React 노드이지만(또한 컴포넌트로부터 반환될 수도 있지만) 유효한 React 엘리먼트는 아닙니다. [`createPortal`](https://react.dev/reference/react-dom/createPortal)로 생성된 배열과 포털 역시 React 엘리먼트로 간주되지 않습니다. --- ## Usage사용법 {/*usage*/} ### Checking if something is a React element**React 엘리먼트인지 확인하기** {/*checking-if-something-is-a-react-element*/} Call `isValidElement` to check if some value is a *React element.* 어떤 값이 *React* 엘리먼트인지 확인하려면 `isValidElement`를 호출하세요. React elements are: React 엘리먼트는 다음과 같습니다: - Values produced by writing a [JSX tag](/learn/writing-markup-with-jsx) - Values produced by calling [`createElement`](/reference/react/createElement) - [JSX 태그](https://react.dev/learn/writing-markup-with-jsx)로 생성한 값 - [`createElement`](https://react.dev/reference/react/createElement)를 호출하여 생성한 값 For React elements, `isValidElement` returns `true`: React 엘리먼트의 경우 `isValidElement`는 `true`를 반환합니다: ```js import { isValidElement, createElement } from 'react'; // ✅ JSX tags are React elements // ✅ JSX 태그는 React 엘리먼트입니다. console.log(isValidElement(

)); // true console.log(isValidElement()); // 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`: 이들에 대해 `isValidElement`는 `false`를 반환합니다: ```js // ❌ 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([

,
])); // 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`](/reference/react/cloneElement) does) and you want to avoid an error when your argument is not a React element. `isValidElement`가 필요한 경우는 매우 드뭅니다. 주로 *오직* ([`cloneElement`](https://react.dev/reference/react/cloneElement)가 그런 것처럼) 엘리먼트만 허용하는 별도의 API에, React 엘리먼트가 아닌 다른 인수로 호출하면 발생하는 오류를 피하고자 할 때 유용합니다. Unless you have some very specific reason to add an `isValidElement` check, you probably don't need it. `isValidElement` 확인을 추가해야 할 특별한 이유가 없는 한, 이는 필요하지 않을 것입니다. #### React elements vs React nodesReact 엘리먼트 vs React 노드 {/*react-elements-vs-react-nodes*/} When you write a component, you can return any kind of *React node* from it: 컴포넌트를 작성할 때, 컴포넌트에서 모든 종류의 *React 노드*를 반환할 수 있습니다: ```js function MyComponent() { // ... you can return any React node ... } ``` A React node can be: React 노드는 다음과 같습니다: - A React element created like `
` or `createElement('div')` - A portal created with [`createPortal`](/reference/react-dom/createPortal) - A string - A number - `true`, `false`, `null`, or `undefined` (which are not displayed) - An array of other React nodes - `
` 또는 `createElement('div')`로 생성된 React 엘리먼트 - [`createPortal`](https://react.dev/reference/react-dom/createPortal)로 생성한 포털 - 문자열 - 숫자 - `true`, `false`, `null`, `undefined` (화면에 표시되지 않음) - 다른 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 노드입니다: ```js 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`를 사용해서는 안 됩니다.