问题标签 [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.
react-native - 使用 useEffect 重新渲染屏幕
我在这个问题上堆积了很长时间,需要一些帮助来解决它。
我正在构建一种销售应用程序,并尝试在一个页面中设置所有内容,以便用户可以获得他的成就与他的目标
在这个屏幕中,我试图设置一张桌子。除了代码假设设置要运行的表格内容外,一切正常。尽管我尽了最大努力让它在用户通过屏幕后重新渲染,但它一直没有重新渲染,我必须手动重新渲染
如果完成屏幕不断重新渲染导致应用程序崩溃。我确定这是我的代码中的一个问题
任何人都可以解决这个问题,我将不胜感激
reactjs - 如果使用 React.memo,则 Parent 中的 React useCallback() 函数只能与 Child 正常工作,没有它不起作用,任何帮助?
父组件
父组件包含在更改时将状态设置为“本地”的输入,以及在单击时获取此“本地”状态的值并将其设置为“sendLocal”的按钮
功能
changehandler :触发输入类型更改。
sendLocalValue :将“本地”值放入“sendLocal”变量中,单击按钮时触发。
sendValue :这个带有依赖“sendLocal”的记忆函数作为子组件中的道具传递,一旦孩子被渲染,就会触发。
子组件
getValue prop 调用 parent 的memoized "sendValue" 函数,该函数返回 sendLocal 的值。
问题
一切正常,子组件仅在单击按钮时“sendLocal”值发生变化时呈现,但如果我删除子组件中的 React.memo(),即使使用了 useCallback(),组件在输入类型上的呈现也会发生变化,为什么?
react-native - 如何使用useEffect和useCallback,让屏幕在按钮点击前不调用该函数
我正在学习 useEffect 和 useCallBack 钩子。我要做的是在 useCallBack 中添加一个函数,并确保在我单击按钮之前屏幕不会调用此函数。下面是我的示例代码。目前,它会在我单击按钮之前调用 useEffect 中的函数。我的目标是单击按钮,然后使用 useCallBack 函数触发 useEffect 函数。还是新手,感谢您的帮助。
reactjs - 在useEffect内部获取的useCallback用法不正确-ReactJS
我想实现以下目标。动作从redux
被导入到这个组件中。它从 firebase 数据库中获取数据。数据显示在此组件内。
我的问题是由于优化,每次安装组件时都会获取数据。我想阻止这种行为。我希望这仅在第一次渲染组件时获取,不再获取。当然,它应该在数据更改时获取,否则不会。我用过useCallback
,但下面的代码肯定有错误。用户通过身份验证时会传递 Token 和 Id。
react-native - React Native - 如何从 Header 提交 Formik
我是 Formik 和 React Native 的新手。目前,我的目标是通过 Navigation 标头提交表单。我发现的所有示例都是从屏幕页面本身提交表单。我需要帮助弄清楚如何正确使用handleSubmit和onSubmit属性以及setParams将值正确传递给导航标题。
现在,我无法将表单中的值发送到 useCallBack 挂钩。
reactjs - useRef、useMemo、useCallback 钩子的生产用例是什么?
除了在许多 YouTube 教程视频中看到的反例之外,和的实际/现实用例是什么?useMemo
useCallback
另外,我只看到了钩子的输入焦点示例。useRef
请分享您为这些钩子找到的其他用例。
javascript - 如何访问 setState 回调之外的最新状态?
由于 React 的异步特性setState
以及经过大量研究后新引入的react 并发模式,我不知道在以下场景或任何其他场景中如何访问保证的最新状态。
非常感谢 React 专家的回答,尤其是来自 React 团队的回答。
请记住,这是一个非常简单的示例,真正的问题可能发生在一个充满状态更新、事件处理程序、改变状态的异步代码的复杂项目中,......
你可能会说我可以onIncrement
在setCount
回调中调用,但是由于新的反应并发模式,你可以看到将来反应更新onIncrement
可能会被调用两次并输出两次结果,这不是预期的结果。
提交阶段通常非常快,但渲染可能很慢。出于这个原因,即将到来的并发模式(默认情况下尚未启用)将渲染工作分成几部分,暂停和恢复工作以避免阻塞浏览器。这意味着 React 可能在提交之前多次调用渲染阶段生命周期,或者它可能在根本不提交的情况下调用它们(因为错误或更高优先级的中断)。
您已经可以(React 17 严格模式)看到onIncrement
在开发模式和 React 并发模式成为默认后的特性中将调用两次,因此在生产中可能会以这种方式调用两次。
在useCallback
依赖项数组中包含 count 是否可以保证 count 是最新的状态值?
onIncrement
您可能会建议在挂钩中调用,useEffect
但这样我将无法访问以前的状态,与此示例不同,它可能无法重新计算。(使用 ref 存储先前的状态不是解决方案)
使用的另一个问题useEffect
是我不确定这个事件处理程序(onIncrement)是效果的原因还是另一个处理程序中的状态更改或useEffect
回调导致了效果。(存储额外的状态或参考来检测原因是多余的)
谢谢!
javascript - useEffect 和 useCallback 导致多次重新渲染
我正在处理我的一个小项目,就在部署之前,我使用的 API 进行了策略更改,以将 API 调用限制为一秒。这导致我遇到错误(错误 429:请求过多)。我的解决方法(因为 axios 在 header prop 之后没有重试是使用 fetch API 创建某种递归函数,如果它失败,它会再次调用)。所以,最初我得到了下面的代码块:
显然,它导致了如此多的重新渲染猜测,导致 useEffect 和 useCallback 中的一些依赖项都是实际的异步状态值。
决定将 fetchCall(没有 useCallback)扔到 useEffect 中,我最终得到了这个:
上面的代码按预期工作。然而,我不知道我忘记注释掉原始的 fetchCalls 函数(在 useEffect 之外),因为我只注释掉了依赖于 API 调用 fetchCalls 函数的第二组 API 调用。现在尝试将其注释掉会导致错误,指出未定义 fetchCalls 并且 fetchCalls 是不必要的依赖项。
但是请注意,在第二个代码块中,useEffect 中的 fetchCalls 承载了第二组 API 调用,这些调用依赖于 useEffect 中的 fetchCalls 函数应该进行的 API 调用。
现在我只想知道为什么它会这样工作,因为这对我来说似乎很奇怪。另外,我可以为此使用更可接受的解决方法吗?