パッケージの詳細

@guoyunhe/use-latest-callback

guoyunhe421.0.0

React hook to provide stable reference to latest callback function

react, react-hooks, use-event, use-callback

readme

@guoyunhe/use-latest-callback

React hook to provide stable reference to latest callback function

Installation

npm install --save @guoyunhe/use-latest-callback

Examples

import { useEffect, useRef, useState } from 'react';
import { useLatestCallback } from '@guoyunhe/use-latest-callback';

function List({ search }) {
  const [data, setData] = useState();

  const reload = useLatestCallback(() => {
    fetch('foobar?search=' + search)
      .then((res) => res.json())
      .then((res) => setData(res));
  });

  // When search change, useEffect will NOT run because dependencies didn't change
  useEffect(() => {
    const interval = setInterval(() => reload(), 3000);
    return () => {
      clearInterval(interval);
    };
  }, [reload]);
}

Compared with traditional useCallback:

import { useCallback, useEffect, useRef, useState } from 'react';

function List({ search }) {
  const [data, setData] = useState();

  const reload = useCallback(() => {
    fetch('foobar?search=' + search)
      .then((res) => res.json())
      .then((res) => setData(res));
  }, [search]);

  // When search change, useEffect will run because dependencies changed
  useEffect(() => {
    const interval = setInterval(() => reload(), 3000);
    return () => {
      clearInterval(interval);
    };
  }, [reload]);
}

更新履歴

Changelog

1.0.0 - 2025-01-13

  • First version