简体   繁体   English

当 function 作为对 useMemo 依赖项数组的依赖时,使用 useMemo 或 useCallback 哪个更好

[英]Which is better to use useMemo or useCallback when the function comes as a dependency on useMemo dependency array

I have a piece of code wrapped in useMemo that uses a function as a dependency that returns some data, is it worth using useMemo in this case since we return data, or is it better to useCallback我有一段代码包装在 useMemo 中,它使用 function 作为返回一些数据的依赖项,在这种情况下是否值得使用 useMemo 因为我们返回数据,还是使用 Callback 更好

Example:例子:

 // useMemo vs useCallback ?
 const getConfigs = useCallback((configs)=> {
   return configs.filter(...some filtering logic)
 }, [])

const getConfigs = useMemo(()=> {
   return configs.filter(...some filtering logic)
 }, [props.configs])

 const someMemoData = useMemo(()=>{
   return {
     names: props.names,
     configs: getConfigs(props.configs) or getConfigs in case useMemo
  }
 }, [props.names, getConfigs, props.configs])

If you return data use useMemo如果你返回数据使用 useMemo

If you return function use useCallback如果你返回 function 使用 useCallback

They both accept same parameters.他们都接受相同的参数。 Their first argument is a callback.他们的第一个参数是回调。 The only difference is that:唯一的区别是:

useMemo(cb) returns cb()
useCallback(cb) returns cb

useCallback(() => {}) is same as useMemo(() => () => {}) useCallback(() => {})useMemo(() => () => {})相同

Your getConfigs returns a function, so better use useCallback for it.您的 getConfigs 返回 function,因此最好使用 useCallback。 While someMemoData returns object, use useMemo当 someMemoData 返回 object 时,使用 useMemo

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM