小编H.b*_*H.b的帖子

为什么这里使用 useMemo 而不是 useCallback ?

据我了解,两者之间的区别在于,如果返回函数、对象或数组,则使用 useCallback,而返回原语时则使用 useMemo。但我正在查找去抖(这是文章: https: //dmitripavlutin.com/react-throttle-debounce/,它说 useMemo 将是一个更好的解决方案。使用 useCallback

import { useState, useCallback } from 'react';
import debounce from 'lodash.debounce';
export function FilterList({ names }) {
  const [query, setQuery] = useState("");
  let filteredNames = names;
  if (query !== "") {
    filteredNames = names.filter((name) => {
      return name.toLowerCase().includes(query.toLowerCase());
    });
  }
  const changeHandler = event => {
    setQuery(event.target.value);
  };
  const debouncedChangeHandler = useCallback(
    debounce(changeHandler, 300)
  , []);
  return (
    <div>
      <input 
        onChange={debouncedChangeHandler} 
        type="text" 
        placeholder="Type a query..."
      />
      {filteredNames.map(name => <div key={name}>{name}</div>)}
    </div> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks usecallback react-usememo

5
推荐指数
1
解决办法
6655
查看次数