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

@zero-song/hooks

v1.0.5

Published

react常用hooks封装

Downloads

6

Readme

React Hooks

一些好用且常用的自定义 hooks

Usage

useMergeState

自定义合并依赖项,使用它的好处是在页面上不用写 N 个 useeState 来设置更新组件所需的状态。

const { useMergeState } = require('@zero-song/hooks');

export () => {
  const {state, setState} = useMergeState({ count: 0 })
  return (
    <div>
      <Button onClick={()=>{ setState({count: state.count + 1}) }}/>加1</Button>
    </div>
  )
}

useCreation

useCreation 是 useMemo 或 useRef 的替代品。换言之,useCreation 这个钩子增强了 useMemo 和 useRef,让这个钩子可以替换这两个钩子。

  • useMemo 的值不一定是最新的值,但 useCreation 可以保证拿到的值一定是最新的值
  • 对于复杂常量的创建,useRef 容易出现潜在的的性能隐患,但 useCreation 可以避免 这里的性能隐患是指:
// 每次重渲染,都会执行实例化 Subject 的过程,即便这个实例立刻就被扔掉了
const a = useRef(new Subject());

// 通过 factory 函数,可以避免性能隐患
const b = useCreation(() => new Subject(), []);

useUpdate

强制更新,有的时候我们需要组件强制更新,这个时候就可以使用这个钩子:

useReactive

一种具备响应式特点的useState

useLatest

确保获取最新值,且可以解决闭包问题

useSingleton

用于定义只执行一次的代码

import { useSingleton } from '@zero-song/hooks';

const MyComp = () => {
  // 使用自定义 Hook
  useSingleton(() => {
    console.log('这段代码只执行一次');
  });

  return <div>My Component</div>;
};

参考文档