反应:运行处理程序,仅在选择渲染,useCallback或useEffect吗?

时间:2019-05-27 00:20:35

标签: javascript reactjs

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

这里最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

useCallback返回一个已记忆的函数,然后调用该函数。正如您所说的,它会被执行。

  

这里最好的方法是什么?

useEffect