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
Дивіться більше прикладів нижче.
Параметри
значення
:значення
, яке ви хочете перевірити. Це може бути значення будь-якого типу.
Повернення
isValidElement
повертає true
, якщо value
є елементом React. В іншому випадку повертається false
.
Застереження
- Тільки JSX-теги та об'єкти, повернуті
createElement
вважаються елементами React. Наприклад, навіть якщо число на кшталт42
є дійсним React-вузлом (і може бути повернуте з компонента), воно не є дійсним React-елементом. Масиви та портали, створені за допомогоюcreatePortal
, також не вважаються елементами React.
Використання
Перевірка, чи є щось елементом React
.Виклик isValidElement
для перевірки, чи є деяке значення елементом React.
Елементи React - це:
- Значення, отримані шляхом написання JSX-тегу
- Значення, отримані за допомогою виклику
createElement
Для React-елементів isValidElement
повертає істину
:
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
як спосіб перевірити, чи можна щось відрендерити.