React:仅在选择渲染、useCallback 或 useEffect 时运行处理程序?

我只想在变量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按预期工作?


这里最好的方法是什么?


缥缈止盈
浏览 160回答 1
1回答

元芳怎么了

useCallback返回一个记忆化的函数,然后你调用它。正如你所说,它被执行。这里最好的方法是什么?useEffect
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript