问题标签 [usecallback]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - useCallBack react-hooks/exhaustive-deps 警告
这是我在 React js 中的代码的一部分:
我有 isFieldsOK 状态,它告诉我我的字段是否有效,我希望它“监听”注册功能中的每一个变化。运行此程序后,我收到此警告:
我的代码到底有什么问题?我应该改变什么,为什么?谢谢!
reactjs - 将函数转换为使用回调
我想重写一个函数,如:
对于 ReactuseCallback
形式的首选,我最好的猜测是:
我得到的错误:
不能在回调中调用 React Hook “useLocation”。React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用 react-hooks/rules-of-hooks
这是否意味着我不能将我的功能转换为useCallback
?
reactjs - 具有依赖关系的 useCallback 与使用 ref 调用函数的最后一个版本
在进行代码审查时,我遇到了这个自定义钩子:
这个钩子是这样使用的:
基本上,与const f = useCallBack(() => { // do stuff }, [dep1, dep2])
此相比,避免声明依赖项列表并且f
永远不会更改,即使其中一个依赖项发生更改。
我不知道如何看待这段代码。我不明白使用useLastVersion
相比有什么缺点useCallback
。
javascript - React useCallback() 和 useEffect on event-handler 不断重新渲染
我正在学习 helinski fsopen20 的反应。其中一个练习需要单击一个按钮并显示该按钮绑定区域的天气。
该按钮有一个 onClick 事件,该事件将区域索引作为参数来确定选择哪个区域(显然)。
OnClick 函数然后呈现所述区域的详细信息。需要获取的数据是在这个函数内部完成的
我能够实现我想要的,但它需要大量的重新渲染。
最初使用 axios get() 没有 useEffect 或 useCallback 导致无限重新渲染但令我惊讶的是,
我试过 useEffect 和 useCallBack() 但没有什么能阻止重新渲染。
在旁注中,我在我的 App 组件中使用了不同的 useEffect ,它渲染一次就好了。
如何正确使用 useEffect 和 onClick 等事件处理函数?
下面是完整的代码:
javascript - 为什么`useCallback`不能总是返回相同的引用
我不明白为什么useCallback
每次更新一个部门时总是返回一个新的参考。React.memo()
它导致许多本可以避免的重新渲染。
如果有的话,这个实现的问题是useCallback
什么?
使用它而不是内置实现肯定会对性能产生重大的积极影响。
自己的结论:
只要您了解其含义,就没有理由不使用使用 ref 的实现而不是内置的setTimeout
,即,正如@Bergy 所指出的,您不能存储回调以供以后使用(例如,在之后)并期望回调具有与同步调用它相同的效果。
然而,在我看来,这是首选行为,因此没有缺点。
reactjs - useCallback 在列表项组件中而不是在父项中
我创建了一个反应应用程序,其中有一个带有删除操作的项目列表。我知道,如果我从父级(项目容器)传递此删除操作,我可以在父级中使用“useCallback”来防止删除方法的不必要重新创建。
但是,如果在 item 组件中定义了 delete 方法并在其中使用了“useCallback”会发生什么?它行不通吗?它不会使用相同的记忆方法而不每次都创建一个新方法吗?
换句话说,记忆的范围是什么?是全球性的吗?还是每个组件?
伪代码:
谢谢
reactjs - 使用反应钩子跨组件携带页面上下文/状态
我是反应钩子的新手。我们正在开发一个没有 redux 的基于反应的应用程序。我们只有一个页面,其中有不同的组件,如搜索、过滤器、网格、分页等。
每当我们在 page 上执行任何操作时,Grid 都应该使用该操作道具刷新。
例如,当我在页面上进行搜索时,网格应该使用搜索道具刷新。我在页面上应用任何过滤器,网格也应该使用过滤器道具和搜索道具刷新。
因此,所有单个组件中的所有操作状态都应该可用,以使用适当的道具来调用网格刷新 api。
您能否帮助我了解我们如何在每个组件级别维护整个页面的状态。
reactjs - 带有回调的 useState 不更新 useCallback 依赖项
我在这里做了一个工作示例: https ://codesandbox.io/s/magical-flower-o0gyn?file=/src/App.js
当我单击隐藏按钮时,我想将更新的数据保存到本地存储:
- 我单击第一列上的隐藏:
setValueWithCallback
运行,将回调设置为 ref 并设置状态 useEffect
开始,使用更新的数据调用回调saveToLocalStorage
被调用,在一个useCallback
设置data
为依赖
问题出在第 3 步,保存到本地存储的内容{visible: true}
适用于两者。我知道如果我改变这一行:
对此:
它有效,但我无法理解,为什么第一个没有。我认为它一定是一些关闭的东西,但我没有看到它。
如果data
已经更新,并useEffect
运行了回调,为什么它没有在依赖数组中更新?是的,这个例子很奇怪,第二个解决方案很好,我只是想演示这个问题。谢谢您的帮助!
reactjs - React 中的 useCallback 似乎不允许我更新父级中的状态
我创建了一个简单的示例,说明如何useCallback
不允许我保留状态更改。当我删除 useCallback 时,我存储在状态中的计数器会按预期更新,但是添加 useCallback(我希望这会使所有扬声器项目的重新渲染不重新渲染)不断将我的状态重置为原始状态(0,0 ,0)。
问题代码在codesandbox中:
https://codesandbox.io/s/flamboyant-shaw-2wtqj?file=/pages/index.js
这是实际简单的一个文件示例