简体   繁体   English

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

[英]React: Run handler, only at select renders, useCallback or useEffect?

I would like to run a function only when the variable phone (see below) changes. 我只想在可变phone (请参阅下文)更改时运行功能。

Note: useMediaQuery works as intended, it initiates re-render whenever the screen size changes above / below 768, and returns true / false. 注意: useMediaQuery按预期工作,每当屏幕大小更改为大于768或小于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])();

My above code fires the callback in useCallback on every re-render. 我上面的代码在每次重新渲染时在useCallback触发回调。 Regardless if phone changed. 无论phone更改。 I tried useEffect and it partially works. 我尝试过useEffect ,它部分起作用。

Why does not useCallback work as intended? 为什么useCallback无法按预期工作?

What is the best approach here? 最好的方法是什么?

useCallback returns a memoized function, which you then call. useCallback返回一个记忆功能,然后您可以调用该功能。 As you call it, it gets executed. 正如您所说的,它会被执行。

What is the best approach here? 最好的方法是什么?

useEffect

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 React useCallback() 和 useEffect on event-handler 不断重新渲染 - React useCallback() and useEffect on event-handler keeps re - rendering React:useEffect是否保证在组件呈现之前运行? - React: Is useEffect not guaranteed to run before the component renders? React useEffect 仅在转到另一个页面并返回后才呈现 - React useEffect only renders after going to another page and getting back React hook useCallback 避免多次渲染 - React hook useCallback to avoid multiple renders 在 React 中使用 useEffect() 和 useCallback 获取数据 - Data Fetching Using useEffect() And useCallback In React React useEffect 导致函数运行 7 次。 我正在使用 useCallback 但它仍然运行很多次 - React useEffect causing function to run 7 times. I am using a useCallback but it still runs to many times 反应 useEffect 和 useCallback linting 错误 - 缺少依赖项 - React useEffect and useCallback linting error - missing dependency React Hook useEffect/useCallback 缺少依赖项 - React Hook useEffect/useCallback has a missing dependency React Hooks useCallback 和 useEffect 导致反应应用程序中的无限循环 - React Hooks useCallback and useEffect causes infinite loop in react application React:使用 useCallback 创建在渲染之间引用相等的闭包 - React: create closure that's referntially equal across renders with useCallback
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM