问题标签 [react-usememo]

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.

0 投票
4 回答
630 浏览

javascript - 在 React 中创建和销毁一个东西的最佳方法是一次?(usestate 中未使用的设置器可以吗?)

我有一个巨大的游戏对象,它在渲染时附加到画布上。我想在创建组件时只创建一次,直到组件被销毁才删除它。

(如果游戏是定期创建和销毁的,那么用户将失去他们的游戏状态。假设我不想编辑游戏以将存储放入ContextRedux或其他东西中,并希望保持游戏原样..)

我看到至少三种方法可以做到这一点:

有什么问题Game1吗?有没有第四种更好的方法来创建和销毁状态一次?

0 投票
0 回答
39 浏览

reactjs - 使用 useMemo() 解决表中的依赖问题

我有一个表组件,它使用对象中定义的列来呈现。我试图用它useMemo来记忆列,因为只要行中的表数据发生变化,它们就不会改变。

这会引发警告:React Hook useMemo does nothing when called with only one argument. Did you forget to pass an array of dependencies? react-hooks/exhaustive-deps. 我该如何解决这个警告;我在这里做错了什么?

0 投票
1 回答
104 浏览

javascript - 在反应中使用'useMemo'时仅在数组中显示匹配的字符串

我有一个自动完成输入字段,并且在最初将输出隐藏在我的数组中时遇到了问题。而不是在安装时显示我的所有项目,我只想显示匹配的字符串。让我的状态为空const [filteredRecipes, setFilteredRecipes] = useState();会在我的循环中引发错误。

Codesanbox: https ://codesandbox.io/s/quzwg?file=/App.js:251-313

JS:

0 投票
1 回答
113 浏览

reactjs - 反应,让 UseMemo 与文本框一起正常工作

以下 UseMemo 不起作用。我正在尝试记住数字值的平方 X^2。我输入 3,计算数据,然后输入 4,然后再输入 3。每次都会重新计算。我怎样才能解决这个问题?

0 投票
1 回答
587 浏览

reactjs - useEffect、useCallback、useMemo的依赖数组

我对 React Hooks 的依赖性感到很困惑。这是示例:

在 React 纪录片中:

笔记

依赖数组不作为参数传递给函数。但是,从概念上讲,这就是它们所代表的含义:函数内引用的每个值也应该出现在依赖项数组中。将来,一个足够先进的编译器可以自动创建这个数组。

count并且setCount都在useMemo的回调中,如果我没有传入setCount依赖数组,eslint不会警告我,但是count会,那么有什么区别?为什么不需要通过setCountsetCount在 useMemo 里面,不是吗?

这是codeandbox链接:

https://codesandbox.io/s/react-codesandbox-forked-xfupk?file=/src/Demo1/index.js:254-363

我想我可能误解了文件。哪位大神指点一下,谢谢

0 投票
0 回答
30 浏览

reactjs - useContext 触发重新渲染而不进行更改

我有以下react组件:

为了避免不必要的重新渲染,我将memo其定义如下:

该组件在Stepper-Component 中提供服务:

不幸的是,无论状态是否实际改变,useEffect()每次Emissions-component 返回时都会触发 API 调用。getStepContent()

知道如何useEffect()仅在electricityValues-array 的值更改时触发吗?

是因为useContext()每次都返回一个新的引用吗?

0 投票
2 回答
626 浏览

javascript - 反应如何有条件地使用 useMemo

我仍然对 React 钩子有所了解,并试图useMemo根据不同的因素有条件地使用。

我的 useMemo 部分看起来像这样

但是我想headers根据选择的语言来更改,所以我尝试使用 `if 语句,但这不起作用

0 投票
1 回答
83 浏览

reactjs - useMemo 计算量大的计算

我使用 useMemo 创建了一个沙箱来优化模拟昂贵的函数,遵循这篇文章中的 Kent C Dodds 示例。记忆似乎不起作用。任何想法为什么?

https://codesandbox.io/s/usememo-rfphn?file=/src/index.tsx

0 投票
1 回答
251 浏览

reactjs - 如何记忆自定义钩子以提高性能

具有以下功能,这是常见的自定义钩子并从多个地方调用。

如何记住这一点以提高性能。(虽然在浏览器上调试然后观察到它被多次调用)。如果fields.forEach只记住而不是自定义挂钩下的所有代码,那也很好

我试图在钩子内添加一个函数,但是我需要返回result对象而不是函数。

///// 组件调用如下

//这里可以memoize吗?所以不需要在自定义钩子中记忆。

0 投票
1 回答
927 浏览

reactjs - 当来自 Apollo useQuery 挂钩的“数据”返回 useMemo 所依赖的“数据”的新值时,useMemo 未运行

我有一个使用 useQuery Apollo Hook 从 GraphQL API 获取数据的组件。该组件还有一个 useMemo,它具有从 useQuery Apollo 挂钩返回的数据变量作为依赖项。useMemo 最初在组件的第一次渲染上运行,因为它应该。然后,当来自 useQuery 的数据返回时,它再次运行。我通过对 useQuery 中的数据变量进行一些更改来跟进这一点。

现在,当我在另一个选项卡中重新渲染此组件时,useQuery 在初始渲染时运行一次,这是应该的,但当来自 useQuery 的数据返回时不会再次运行。注意:我在上一个选项卡中修改了 useMemo 中的数据变量,graphql api 返回了一个新的数据值,所以 useMemo 应该能够发现它,但不知何故它没有。

经我调查可能的原因:

  1. 如果“数据”变量处于函数状态,useMemo 只会在第二个选项卡中第二次运行,并且当来自 useQuery 的新数据返回并且 useQuery 重新渲染组件时不会运行,因为它对组件不可见改变。

任何帮助,将不胜感激。谢谢!