我只想在变量phone
(见下文)更改时运行函数。
注意:useMediaQuery
可以正常工作,每当屏幕大小更改为768以上/以下时,它就会启动重新渲染,并返回true / false。
const phone = !useMediaQuery('(min-width:768px)'); // 768 and down: Smartphones
console.log('phone', phone);
useCallback(() => {
console.log('useCallback fired');
if (!phone) handleDrawerClose();
}, [phone])();
我上面的代码在每次重新渲染时都在useCallback
中触发回调。无论phone
是否更改。我尝试了useEffect
,但部分有效。
useCallback
为什么不能按预期工作?
这里最好的方法是什么?
答案 0 :(得分:1)
useCallback
返回一个已记忆的函数,然后调用该函数。正如您所说的,它会被执行。
这里最好的方法是什么?
useEffect