An open API service indexing awesome lists of open source software.

https://github.com/treyhuffine/is-react

Determine if a variable or statement is a React element or component
https://github.com/treyhuffine/is-react

react react-components

Last synced: 9 months ago
JSON representation

Determine if a variable or statement is a React element or component

Awesome Lists containing this project

README

          

# Is React



is-react?


Determine if a variable or expression is a valid element or component in React





install size

A library to determine if a variable or an expression is a React element or component.
For a more thorough understanding, this [article](https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html) describes elements and components in React, and this [article](https://facebook.github.io/react/docs/jsx-in-depth.html)
gives an understanding of the JSX syntax.

### Sponsored by:
- [Skilled.dev - Coding Interview Course](https://skilled.dev)
- [gitconnected - The Developer Learning Community](https://gitconnected.com)

Note: The React team now offers a package [react-is](https://www.npmjs.com/package/react-is) that provides similar functionality. I recommend checking that out as well to see if it's more suited for your needs.

## Install

`yarn add is-react` or `npm i --save is-react` to use the package.

## Examples

Real world:

```javascript
import React from 'react';
import isReact from 'is-react';

const MyImageComponent = ({ SomeProp }) => {
if (typeof SomeProp === 'string') {
// assume it's the src for an image
return ;
} else if (isReact.component(SomeProp)) {
return ;
} else if (isReact.element(SomeProp)) {
return SomeProp;
}

return null;
};
```

---

Samples:

```javascript
// Class Component
class Foo extends React.Component {
render() {
return

Hello

;
}
}

const foo = ;

//Functional Component
function Bar(props) {
return

World

;
}
const bar = ;

// React Element
const header =

Title

;

// Check
isReact.compatible(Foo); // true
isReact.component(Foo); // true
isReact.classComponent(Foo); // true
isReact.functionComponent(Foo); // false
isReact.element(Foo); // false

isReact.compatible(); // true
isReact.component(); // false
isReact.element(); // true
isReact.DOMTypeElement(); // false
isReact.compositeTypeElement(); // true

isReact.compatible(Bar); // true
isReact.component(Bar); // true
isReact.classComponent(Bar); // false
isReact.functionComponent(Bar); // true
isReact.element(Bar); // false

isReact.compatible(); // true
isReact.component(); // false
isReact.element(); // true
isReact.DOMTypeElement(); // false
isReact.compositeTypeElement(); // true

isReact.compatible(header); // true
isReact.component(header); // false
isReact.element(header); // true
isReact.DOMTypeElement(header); // true
isReact.compositeTypeElement(header); // false
```

## API

`import isReact from 'is-react'` to use the package

All functions return a `boolean`. The primary functions you will most likely
use are `compatible()`, `element()`, and `component()`.

#### `isReact.compatible()`

Determine if a variable or expression is compatible with React. Valid React
components and elements return `true`.

#### `isReact.element()`

Determine if a variable or expression is a React element. Will return `true`
for both DOM type and Composite type components.

#### `isReact.component()`

Determine if a variable or expression is a React component. Will return `true`
for both functional and class components.

#### `isReact.classComponent()`

Determine if a variable or expression is a React class component.

#### `isReact.functionComponent()`

Determine if a variable or expression is a React functional component.

#### `isReact.DOMTypeElement()`

Determine if a variable or expression is a React DOM type element.

#### `isReact.compositeTypeElement()`

Determine if a variable or expression is a React Composite type element.

## Thanks!

Inspired by this Stackoverflow [answer](http://stackoverflow.com/a/41658173)