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-hooks-object-state

v1.1.3

Published

React hook for partially updating state objects within functional components

Downloads

55

Readme

License NPM Version Travis Build Status Codecov

About

A React hook for partially updating object states within functional components that avoids the default behavior of useState that overwrites the entire object state. It reflects the merge behavior of setState used in classical components.

Use this when you need an object state that shouldn't be split up into multiple states.
Don't use this if you only need an object state with a few simple properties.

Features

  • Partially update object values in state without erasing any non-updated entries
  • Calculate new values based on the previous state with a function argument

Install

$ npm install react-hooks-object-state

Peer dependencies: react (^16.8.0)

Usage

Within a functional component, simply declare and use the useObjectState hook to create a state object. Then pass any object updates to the returned setter function to update the original object.

import React from 'react';
import useObjectState from 'react-hooks-object-state';

const Example = () => {
  const [myObject, setMyObject] = useObjectState({ bool: true, string: 'foo' });

  const updateObject = () => setMyObject({ bool: false });

  return <button onClick={updateObject}>Update object</button>;
}

// myObject after update:
// {
//   bool: false,
//   string: 'foo'
// }

Passing a function

Alternatively, you can pass a function to the setter if you need to use the previous state to calculate new state values.

const updateObject = () => {
  setMyObject((state) => {
    return {
      string: state.str + 'bar'
    }
  })
}

The use of props in function arguments is not included since hooks are not able to read component props, and workarounds would not effectively replicate the classical setState behavior.

Additional info

An initial object must be provided to useObjectState. This hook deep-merges objects by copying common entries from a source to a target object.

Like the classical setState method, this does not create entries if they don't already exist. Providing an empty initial object will always result in an empty object.