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-data-dam

v4.2.1

Published

Holds back your data until you're ready to see the updates.

Downloads

43

Readme

react-data-dam

Build Status dependencies Status JavaScript Style Guide

Holds back your data until you're ready to see the updates. Useful for implementing a Twitter style "See n new Tweets" button.

Initial data passed to DataDam will be passed onto it's children, but changes to that data are held back until the children signal that they want to receive it. Children are passed a diff object which describes the difference between the data they currently have and what is being held back so they know what they're missing.

Install

npm install react-data-dam

Usage

import React from 'react'
import { DataDam } from 'react-data-dam'

export default ({ items }) => (
  <DataDam data={items}>
    {(data, diff, release) => (
      <div>
        <ul>
          {data.map((d) => <li>{d._id}</li>)}
        </ul>
        {diff.total.changes ? (
          <button onClick={release}>Load {diff.total.changes} updates</button>
        ) : null}
      </div>
    )}
  </DataDam>
)

API

<DataDam />

data

Type: PropTypes.arrayOf(PropTypes.object).isRequired

The data you want to build a dam against. Only the initial value will be passed through to child components until release is called.

The flowing prop can be used to allow data through from initial mount to a time that you're ready to enforce the dam.

Objects in the array should have an _id property to determine updates. This can be changed using the idProp prop.

children

Type: PropTypes.func.isRequired

A function that renders the children. It is passed 3 parameters:

  • data - the cached data since the last release or initial mount
  • diff - the difference between the passed data and the data that is being held back
  • release - a function to call that will release any data that is held back

The diff object looks like this:

{
  added: [], // items that were added to data
  removed: [], // items that were removed from data
  updated: [],  // items that remained in data but were altered in some way
  moved: [], // items that changed index
  total: {
    changes: 0, // added + removed + updated
    added: 0,
    removed: 0,
    updated: 0,
    moved: 0
  }
}

flowing

Type: PropTypes.bool, default: false

Allow data to flow freely through the dam without needing to call release.

idProp

Type: PropTypes.string, default: _id

Changes the property that is considered to be the ID of the data items.

autoRelease

Type: PropTypes.func

Called each time the held back data changes. When this function returns true the held back data will be released. It is passed 4 parameters:

  • data - the cached data since the last release or initial mount
  • diff - the difference between the passed data and the data that is being held back
  • nextData - the data that is being held back
  • incrementalDifference - a function you can call to calculate the incremental diff, which is the difference between the previous nextData and the new nextData

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

MIT © Alan Shaw


A (╯°□°)╯︵TABLEFLIP side project.