Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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
Javascript 如何使自定义钩触发useEffect仅在道具更改时生效?_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 如何使自定义钩触发useEffect仅在道具更改时生效?

Javascript 如何使自定义钩触发useEffect仅在道具更改时生效?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,在这段视频中,Dan提取了一个useDocumentTitle自定义钩子,但我多次发现自定义钩子触发器,有时这是不必要的。问题是如何仅在关键道具更改时触发useEffect功能 无需使用自定义挂钩即可实现: useEffect(() => { console.log('useDocumentTitle ') document.title = myTitle); }, [someProp]) 但是如何使用定制挂钩呢 您可以简单地将键作为单独的参数传递,并在自定义挂钩中使用上面使用

在这段视频中,Dan提取了一个useDocumentTitle自定义钩子,但我多次发现自定义钩子触发器,有时这是不必要的。问题是如何仅在关键道具更改时触发useEffect功能

无需使用自定义挂钩即可实现:

useEffect(() => {
  console.log('useDocumentTitle ')

  document.title = myTitle);
}, [someProp])
但是如何使用定制挂钩呢


您可以简单地将键作为单独的参数传递,并在自定义挂钩中使用上面使用的代码

function useCustomHook({someProp, myTitle}) {
    useEffect(() => {
        console.log('useDocumentTitle ')

        document.title = myTitle);
    }, [someProp])
}
你会像这样使用它:

const customHookOptions = {someProp: props.key, myTitle: 'the title'}
useCustomHook(customHookOptions)
您可以做的另一件事是,使用
react.memo()

还有一个hook
usemo
,它有自己的位置来做繁重的工作