isValidElement
isValidElement проверяет, является ли значение элементом React.
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: Значениеvalue, которое требуется проверить. Оно может быть любого типа.
Возвращаемое значение
isValidElement возвращает true, если value является элементом React. В противном случае возвращает false.
Ограничения
-
Только теги JSX и объекты, возвращаемые
createElement, считаются элементами React. Например, даже число, такое как42, является допустимым узлом React (и может возвращаться из компонента), но не является допустимым элементом 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 может быть:
- Элементом React, созданным как
<div />илиcreateElement('div') - Порталом, созданным с помощью
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 для проверки возможности отображения чего-либо.
© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://react.dev/reference/react/isValidElement