Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我可以使用useCallback或UseMoom来缓存函数的结果吗?_Reactjs_Caching_React Hooks_Memo_Usecallback - Fatal编程技术网

Reactjs 我可以使用useCallback或UseMoom来缓存函数的结果吗?

Reactjs 我可以使用useCallback或UseMoom来缓存函数的结果吗?,reactjs,caching,react-hooks,memo,usecallback,Reactjs,Caching,React Hooks,Memo,Usecallback,假设组件中有一个函数,例如: const MyComponent = ({data}) => { const myFunction = a => a+1; return <div> data.map(num => myFunction(num)) </div> } constmycomponent=({data})=>{ 常量myFuncti

假设组件中有一个函数,例如:

     const MyComponent = ({data}) => {
       const myFunction = a => a+1;
       return <div>
                  data.map(num => myFunction(num))
              </div>
     }
constmycomponent=({data})=>{
常量myFunction=a=>a+1;
返回
map(num=>myFunction(num))
}
如果已使用相同的参数调用了myFunction(),我不希望再次调用它。
在此处添加缓存的最佳做法是什么?

否,useCallback和UseMoom有不同的用途。在这种特定情况下,您需要自己创建一些缓存机制,或者从第三方软件包中获取一种:

const MyComponent = ({data}) => {
  const cacheRef = React.useRef({})
  const myFunction = a => {
    const cache = cacheRef.current;
    if(cache[a]){
      return cache[a];
    } else{
      cache[a] = a+1;
      return cache[a];
    }
  };
  return <div>
          {data.map(num => myFunction(num))}
         </div>
}
constmycomponent=({data})=>{
const cacheRef=React.useRef({})
常量myFunction=a=>{
const cache=cacheRef.current;
如果(缓存[a]){
返回缓存[a];
}否则{
cache[a]=a+1;
返回缓存[a];
}
};
返回
{data.map(num=>myFunction(num))}
}