javascript - 仅在道具更改时如何在自定义钩子触发器中使用useEffect?
问题描述
在这个视频中,Dan 提取了一个 useDocumentTitle 自定义钩子,但是我多次发现自定义钩子触发,有时是不必要的。问题是如何仅在 key props 发生变化时触发 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)
您可以做的另一件事是仅在使用https://reactjs.org/docs/react-api.html#reactmemo更改道具时重新渲染整个组件react.memo()
还有一个钩子useMemo
有自己的地方可以做繁重的工作https://reactjs.org/docs/hooks-reference.html#usememo
推荐阅读
- azure-service-fabric - 在 Service Fabric AD 应用上分配服务主体管理员角色
- macos - 单击“显示标签栏”时没有加号按钮
- imagemagick - 调整大小模糊
- python - 为什么芹菜周期性任务只触发一次功能
- powerbi - Power BI 中的折线图
- python - 如何避免在 pandas 的整个列中出现 NaN?
- java - TaskStackBuilder 无法通过通知工作
- python - Python - 在 __iter__ 方法中设置变量
- python - 给定 2 个字符串,返回两个字符串包含相同长度的 2 子字符串的位置数
- java - 为什么这个 for 循环会显示 4 和 5 之前的数字?