Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-debounce-component

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-debounce-component

Debounce input, search, render, functions or anything else with <Debounce/> in React and React Native

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
323
increased by8.03%
Maintainers
1
Weekly downloads
 
Created
Source

react-debounce-component

Debounce any component with React or React Native

<input>
<Debounce ms={500}>
  <List/>
</Debounce>

Tiny: react-debounce-component is very tiny, fast and does not require any other package. Overall it has under 70 lines of code.

Generic: You can debounce almost anything you want: input, search, render, functional components, fetch, api calls, ... It works with react and react-native.

Easy: Think In React not JS. Most other solution work with functions, but this is a <Component>. It makes the code easier to understand and less error-prone. Just put what you want to debounce inside <Debounce>here</Debounce> of your render function and you're good.

Install

npm install react-debounce-component --save

or use yarn.

Examples

Example 1

This is the most simple example. It just debounces the output of <input> for one second.

import React from 'react';
import Debounce from 'react-debounce-component';

class App extends React.Component {
  constructor (props) {
    super(props);
    this.state = {value: 'Hello'}
  }
  render () {
    return (
      <div>
        <input value={this.state.value} onChange={(event) => {this.setState({value: event.target.value})}}/>
        <Debounce ms={1000}>
          <div>{this.state.value}</div>
        </Debounce>
      </div>
    );
  }
}

export default App;

Example 2

This is a more common scenario, where a list gets fetched from the web.

Expand

import React from 'react';
import Debounce from 'react-debounce-component';

class App extends React.Component {
  constructor (props) {
    super(props);
    this.state = {value: ''}
  }
  render () {
    return (
      <div>
        <input value={this.state.value} onChange={event => this.setState({value: event.target.value})}/>
        <Debounce ms={1000}>
          <List search={this.state.value}/>
        </Debounce>
      </div>
    );
  }
}

class List extends React.Component {
  constructor (props) {
    super(props);
    this.state = {items: []};
  }
  componentDidUpdate (prevProps) {
    if (prevProps !== this.props) { // Prevent rendering after setState()
      fetch('https://api.publicapis.org/entries?title=' + this.props.search)
        .then(res => res.json())
        .then(result => this.setState({items: result.entries || []}));
    }
  }
  render () {
    return (
      <ul>
        {this.state.items.map(item => (
          <li key={item.Link}>
            {item.API} {item.Link}
          </li>
        ))}
      </ul>
    );
  }
}

export default App;

Props

ms

Time to wait (delay) in milliseconds until the component inside <Debounce> gets rendered.

requiredno
default250
 typenumber

initialComponent

What to display on first render (mount). Default is to render the children immediately (e.g. fetch immediately)

Tip: put in null to prevent rendering the children on mount

requiredno
defaultchildren
typecomponent

Supports React version 16.0.0 and higher. Should even work with 0.13.0 and higher.


License

react-debounce-component is MIT licensed.

Keywords

FAQs

Package last updated on 09 Nov 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc