react-listener-provider
Create a provider and use HOC (Higher Order Components) to listen for [Events](https://developer.mozilla.org/en-US/docs/Web/Events) in one place.
Last updated 9 years ago by jnsdls .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install react-listener-provider 
SYNC missed versions from official npm registry.

react-listener-provider

Create a provider and use HOC (Higher Order Components) to listen for Events in one place.

Usage Example

react-listener-provider exports a ReactListenerProvider component as well as a withListener() wrapper function.

Components wrapped with withListener() will have an added prop listener which exposes add() and remove() methods.

add() and remove() work just like window.addEventListener() and window.removeEventListener(), they take a type <string> argument and a callback <function> argument.

import React, { Component } from 'react';
import ReactListenerProvider, { withListener } from '../../src';

class MouseMove extends Component {
  state = { x: 0, y: 0 };

  componentDidMount() {
    const { add } = this.props.listener;
    add('mousemove', ({ clientX: x, clientY: y }) => this.setState({ x, y }));
  }

  componentWillUnmount() {
    const { remove } = this.props.listener;
    remove('mousemove', ({ clientX: x, clientY: y }) => this.setState({ x, y }));
  }

  render() {
    const { x, y } = this.state;
    return (
      <div>
        <span>x: {x}</span>
        <span> - </span>
        <span>y: {y}</span>
      </div>
    );
  }
}


const WrappedComponent = withListener(MouseMove);


class App extends Component {
  render() {
    return (
      <ReactListenerProvider>
        <WrappedComponent />
      </ReactListenerProvider>
    );
  }
}

Installation

yarn add react-listener-provider

Since version 0.2.0 you'll also need "prop-types" as a peer dependency.

yarn add prop-types

API

Props

ReactListenerProvider

none

Component wrapped with withListener()

listener: React.PropTypes.shape({
      add: React.PropTypes.func.isRequired,
      remove: React.PropTypes.func.isRequired
    }).isRequired

Development

  1. clone this repo
  2. yarn
  3. cd demo
  4. yarn && yarn start

Attribution

The repo structure as well as the inspiration to create this project come from react-perimiter.

Thanks to @aweary for the encouragement.

Current Tags

  • 0.2.0                                ...           latest (9 years ago)

4 Versions

  • 0.2.0                                ...           9 years ago
  • 0.1.2                                ...           9 years ago
  • 0.1.1                                ...           9 years ago
  • 0.1.0                                ...           9 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 3
Last Day 0
Last Week 3
Last Month 1
Dependencies (0)
None

Copyright 2013 - present © cnpmjs.org | Home |