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

use-shallow

v1.0.2

Published

A tiny React hook for implementing shallow routing

Downloads

222

Readme

useShallow Hook

Shallow routing

Shallow routing allows you to change the URL without running data fetching methods again.

for example when you want to do filtering with input that changes the url on each type /blog?search=shallow

The Problem

If you used Next Js before you might noticed that in Next 12 there was a shallow routing functionality, but in the latest version (Next 13) shallow routing is no longer there.

The Solution

The useShallow React Hook is providing a workaround for that same functionality for both vanilla React and Next Js.

Installation

Install using npm :

npm install use-shallow

And then import useShallow :

import useShallow from "use-shallow";

NOTE !important

Adding a state is required even if it's not used in the component.

This state causes the component to re-render so it recognizes the updated url.

Usage

Its used like any other React hook

const [queries, push] = useShallow();
  • queries is of type URLSearchParams and it holds the search parameters of the url To get the value of search in a url /blog?search=whatever

    you can use

    queries.get("search");

    Well, you can use whatever props and methods are available in the URLSearchParams object.

  • push is a function that allows you to change the url It takes one parameter which is the desired url you wanna route to. Example:

    push(`/blog?q=${searchQuery}`);

NOTE !important

In some cases (based on your usage) you may find that queries are getting the previous and not the current query.

For example if your url has ?query=React, but queries gets Reac instead of React.

For solving this issue, you may consider adding an extra state that causes re-render to get the current (latest) query.