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

references

v0.0.0

Published

Providing references to your React components from one single location

Downloads

29

Readme

references

The references library allows you to create named references which allows you to easily track multiple references from a single location. You can use one instance to manage all references, or even

Installation

The references library is released in the public npm registry and can be installed by running:

npm install --save references

Usage

The library is designed to be a replacement of the React.createRef function that ships in React, this is possible because it uses the same object structure.

const refs = require('references');

const ref = refs();
console.log(ref.current);

create(name)

Create a new named reference. The name later be used to retrieve the ref using the get method. The name argument is required and should be unique for the created reference instance.

const refs = require('references');
const ref = refs();

const label = ref.create('label');

<Component ref={ label } />

forward(name)

It returns an object that should be spread on the component. It will introduce the following properties:

  • ref Created reference with the supplied name.
  • references Reference to the references instance, so you can chain them.
const refs = require('references');
const ref = refs();

const label = ref.forward('label');
<Component { ...forward } />

get(name)

The get method allows you to find the references that were created. It accepts a single argument, which is the name of the ref that was created. It's possible that a ref was created from another reference, in that case you can use the dot notation reference the created ref.

const refs = require('references');

const ref = refs();
const input = ref.create('input');    // This is what you pass to your components
const header = ref.create('header');  // using the `ref` property:
const label = header.create('label'); // <Example ref={ ref.create('example') } />

console.log(ref.get('input'));        // Points to the `input` ref
console.log(ref.get('header'));       // Points to the `header` ref
console.log(ref.get('label'));        // Returns null, as label was created as child of header
console.log(ref.get('header.label')); // Points to the `label` ref
console.log(header.get('label'));     // Points to the `label` ref

Example

import React, { Component } from 'react';
import references from 'references';

class Example extends Component {
  constructor() {
    super(...arguments);

    this.references = this.props.references || references();
  }

  render() {
    const refs = this.references;

    return (
      <Container ref={ refs /* references() it self can also be used as ref */ }>
        <Header { ...refs.forward('header') }>
          <Smol ref={ ref.create('smol') }>tiny text here</Smol>
        </Header>
      </Container>
    )
  }
}
<Example />

The <Example /> will now have the following references created:

  • `` (Just ref.get() without any arguments )
  • header
  • header.title
  • smol
const refs = references();
<Example {...refs.forward('foo') } />

The <Example /> will now have the following references created:

  • foo
  • foo.header
  • foo.header.title
  • foo.smol

License

MIT