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

reffer

v1.0.0

Published

Nice, DRY replacement for React string refs

Downloads

13

Readme

Reffer

npm reffer Build Status codecov

Nice, DRY replacement for React string refs

Introduction

React no longer allows string-based refs. Reffer is a small function to substitute in for those times that you don't need anything fancy from your ref callbacks. It avoids encouraging you to make one-character variables by managing the callback action itself.

To borrow and adapt React's own ref example, with Babel's experimental transform-function-bind plugin enabled, this is the ideal usage;

import reffer from 'reffer';

class CustomTextInput extends React.Component {
  handleFocusClick = () => {
    // Explicitly focus the text input using the raw DOM API
    this.textInput.focus();
  };

  render() {
    // Use the `ref` callback to store a reference to the text input DOM
    // element in this.textInput.
    return (
      <div>
        <input
          type="text"
          ref={this::reffer('textInput')} />
        <input
          type="button"
          value="Focus the text input"
          onClick={this.handleFocusClick}
        />
      </div>
    );
  }
}

Reffer will return a simple function, which will apply the supplied ref to this when it's called.

Alternative Use

There are a few different modes of operation for Reffer, the first is passing its return value as the ref attribute (as seen above).

Spread Syntax

The second is to spread its return value onto the React component in question;

<input
  type="text"
  {...this::reffer('textInput')} />

This will set ref on the element just the same as before, but is presented as an alternative syntax.

Plain JSX transformer compatible method

Alternatively, if you either aren't using Babel, or want to avoid experimental syntax, you can use Reffer like this;

<input
  type="text"
  ref={reffer(this, 'textInput')} />

or, the same way, but using Spread syntax;

<input
  type="text"
  {...reffer(this, 'textInput')} />