npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-mixout-listen

v0.5.7

Published

Global event listeners for react-mixout

Downloads

19

Readme

React Mixout - Listen

npm Build Status

For a full description of what this is please refer to the main README file of this project.

Heavily inspired by react-event-listener.

You can use this mixout to bind global events to methods on your component. It will also manage memory for you, i.e. register on mount, remove on unmount.

Installation

You can install this package with the following command:

npm install react-mixout-listen

Examples

Simple

You can easily bind a class method with a global event.

import React from 'react';
import mixout from 'react-mixout';
import listen from 'react-mixout-listen';

class MyComponent extends React.Component {
  onResize(event) {
    // handle resize
  }

  render() {
    return null;
  }
}

// By default mixout will attach the listener to window.
export default mixout(listen('resize', 'onResize'))(MyComponent);

Modify Target

If you need to attach the listener to another node you can use the target property on options.

The target can be either a string (key on window) like: document or window, or a callback returning the element to attach the listener on. Defaults to window.

Why a callback? Server doesn't have window or document. Since the target is not needed until after mounting, this can approach ensure that server-side rendering is always supported out of box.

import React from 'react';
import mixout from 'react-mixout';
import listen from 'react-mixout-listen';

class MyComponent extends React.Component {
  onClick(event) {
    // handle resize
  }

  render() {
    return null;
  }
}

export default mixout(listen('click', 'onClick', { target: 'document' }))(MyComponent);

// Or ...

// You can return any node you wish from the callback.
export default mixout(listen('click', 'onClick', { target: () => document.body }))(MyComponent);

Use Capture

If you need to pass down the useCapture argument you can add useCapture: true to the options.

import React from 'react';
import mixout from 'react-mixout';
import listen from 'react-mixout-listen';

class MyComponent extends React.Component {
  onResize(event) {
    // handle resize
  }

  render() {
    return null;
  }
}

export default mixout(listen('resize', 'onResize', { useCapture: true }))(MyComponent);

API Reference

listen

function listen(event: string, method: string, options?: ListenOptions): Injector

interface ListenOptions {
  target?: string | (() => EventTarget);
  useCapture?: boolean;
}
  • event: The name of the event to pass to addEventListener.
  • method: The name of the method on the wrapped component to call when the event fires.
  • options: The extra options to customize behavior.
    • target: The name of the key on window or a callback returning the target node.
    • useCapture: Determines whether the addEventListener should be called with useCapture: true.

Typings

The typescript type definitions are also available and are installed via npm.

License

This project is licensed under the MIT license.