我想重写一个像这样的函数:
function useQuery() {
return new URLSearchParams(useLocation().search);
}
被React首选useCallback
,我的最佳猜测是:
const useQuery = useCallback(
() => {
return new URLSearchParams(useLocation().search);
},
[useLocation]
);
我得到的错误:
无法在回调内部调用React Hook的“ useLocation”。React Hooks必须在React函数组件或自定义的React Hook函数中调用react-hooks / rules-of-hooks
这是否意味着我无法将函数转换为useCallback
?
useLocation
是一个钩子,应直接在组件中调用。但是,其结果可以在回调中使用。例如:
const location = useLocation();
const useQuery = useCallback(
() => {
return new URLSearchParams(location.search);
},
[location]
);
尽管既然location
是一个对象,并且您实际上只关心search
值,但是useCallback
使用简单的值来确定钩子更改内容的比较可能更准确:
const { search } = useLocation();
const useQuery = useCallback(
() => {
return new URLSearchParams(search);
},
[search]
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句