isValidElement
isValidElement verifica se um valor é um Elemento React.
const isElement = isValidElement(value)Referência
isValidElement(value)
Chame isValidElement(value) para verificar se value é um Elemento React.
import { isValidElement, createElement } from 'react';
// ✅ Elementos React
console.log(isValidElement(<p />)); // true
console.log(isValidElement(createElement('p'))); // true
// ❌ Não Elementos React
console.log(isValidElement(25)); // false
console.log(isValidElement('Hello')); // false
console.log(isValidElement({ age: 42 })); // falseParâmetros
value: Ovalueque você quer verificar. Pode ser qualquer valor de qualquer tipo.
Retorna
isValidElement retorna true se o value é um Elemento React. Caso contrário, retorna false.
Ressalvas
- Apenas tags JSX e objetos retornados por
createElementsão considerados Elementos React. Por exemplo, embora um número como42seja um nó React válido (e pode ser retornado de um componente), ele não é um Elemento React válido. Arrays e portais criados comcreatePortaltambém não são considerados Elementos React.
Uso
Verificando se algo é um Elemento React
Chame isValidElement para verificar se algum valor é um Elemento React.
Elementos React são:
- Valores produzidos ao escrever uma tag JSX
- Valores produzidos ao chamar
createElement
Para Elementos React, isValidElement retorna true:
import { isValidElement, createElement } from 'react';
// ✅ Tags JSX são Elementos React
console.log(isValidElement(<p />)); // true
console.log(isValidElement(<MyComponent />)); // true
// ✅ Valores retornados por createElement são Elementos React
console.log(isValidElement(createElement('p'))); // true
console.log(isValidElement(createElement(MyComponent))); // trueQuaisquer outros valores, como strings, números, ou objetos e arrays arbitrários, não são Elementos React.
Para eles, isValidElement retorna false:
// ❌ Esses *não* são Elementos React
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É muito incomum precisar de isValidElement. É principalmente útil se você estiver chamando outra API que apenas aceita elementos (como cloneElement faz) e você quer evitar um erro quando seu argumento não é um Elemento React.
A menos que você tenha alguma razão muito específica para adicionar uma verificação isValidElement, você provavelmente não precisa disso.
Deep Dive
Quando você escreve um componente, você pode retornar qualquer tipo de Nó React dele:
function MyComponent() {
// ... você pode retornar qualquer Nó React ...
}Um Nó React pode ser:
- Um Elemento React criado como
<div />oucreateElement('div') - Um portal criado com
createPortal - Uma string
- Um número
true,false,null, ouundefined(que não são exibidos)- Um array de outros Nós React
Nota que isValidElement verifica se o argumento é um Elemento React, não se é um Nó React. Por exemplo, 42 não é um Elemento React válido. No entanto, é um Nó React perfeitamente válido:
function MyComponent() {
return 42; // Tudo bem retornar um número do componente
}É por isso que você não deve usar isValidElement como uma forma de verificar se algo pode ser renderizado.