问题标签 [use-state]

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 投票
3 回答
21155 浏览

javascript - UseState 总是显示以前的值

这是所有新反应开发人员中的一个流行问题,但不知何故我无法理解可用解决方案背后的逻辑。我正在尝试使用钩子更新状态变量并尝试读取更新后的值,但它总是返回以前的值而不是新值。下面是我的代码执行顺序。

单击按钮时,它执行以下代码并更新状态,但console.log显示旧值。

控制台日志:

  1. 第一个按钮点击:

点击 ID: 0 accountId: 0

  1. 第二个按钮点击:

点击 ID:1 accountId:0

谁能告诉我这种行为背后的原因以及如何解决它。

0 投票
2 回答
2083 浏览

javascript - 使用 UseState Hook 后反应组件不重新渲染

我正在创建一个在屏幕上显示元素列表的反应应用程序。我创建了让用户按名称对元素进行排序的函数。

该功能正常运行,改变了学校的状态;我可以从控制台看到,但元素没有重新渲染。

我认为这是因为 React 在值未更改时不会重新渲染组件,但由于顺序更改后无法找到重新渲染元素的方法。

0 投票
2 回答
115 浏览

reactjs - ReactJs UseState:将元素插入数组不更新

我正在尝试使用 React Hooks,但不知何故我的状态没有更新。当我单击复选框时(参见示例),我希望将后者的索引添加到数组selectedItems中,反之亦然

我的功能如下所示:

你可以在这里console.log找到结果

结果中的一个空数组,有人可以向我解释我错过了什么吗?

0 投票
2 回答
765 浏览

javascript - 为什么我的useEffect反应函数在页面加载时运行,尽管我给了它第二个值数组

为什么我的 useEffect 反应函数在每次页面加载时都运行,尽管给它一个带有query变量的第二个值数组?

它不应该只在query状态变量更改时运行吗?除了 useEffect 函数外,我没有其他任何东西使用该getRecipes函数。

在此之后:https ://www.youtube.com/watch?v=U9T6YkEDkMo

0 投票
1 回答
165 浏览

reactjs - React hook api 状态有时为空

我正在使用钩子 api 来管理状态,问题是处理函数中的状态有时为空。

我正在使用组件进行管理contenteditable(使用来自 npm)lib。您可以写入组件并在输入时将事件发送给父级。

看我的例子:

主要问题是内部handleKeyPress(输入按键后)是value(来自状态)空字符串,为什么?- 在块中console.log(value) // THERE IS A PROBLEM, VALUE IS SOMETIMES EMPTY, BUT I AM SURE THAT TEXT IS THERE!!!我不明白出了什么问题?

0 投票
1 回答
262 浏览

reactjs - 可以在 React 中重新定义 useState 中的 updater 函数吗?

我正在研究一个使用商店对象的相当复杂的组件。数据是本地的,因此不保证将其添加到我的 Redux 存储中,但足够昂贵以至于不应该在每次渲染时都计算它。我useState用来存储和更新这个对象。但是,我有几个关于商店的功能,我想将它们分解成一个新文件,包括更新程序功能。例如,我想做类似的事情:

这会可靠地工作吗,更重要的是,它是否违反了任何规则/反模式?

0 投票
1 回答
980 浏览

dependencies - 使用 useEffect 和 useState 避免 ESLint 'react-hooks/exhaustive-deps' 警告

我正在使用useEffect()钩子通过“useState”调用更新某些状态:

不出所料,ESLint 给了我一个警告formValues

但是,它继续提到:

我对神秘的“setFormValues(f => ...)”方法很感兴趣。这到底是什么意思?我应该如何重写setFormValues({ ...formValues, ...newProps })以避免 ESLint 警告,而不添加formValues作为依赖项添加// eslint-disable-next-line react-hooks/exhaustive-deps?

我试过查看 repo,我最接近的是this,它似乎没有提到这个特殊的解决方法。

0 投票
1 回答
1139 浏览

javascript - 了解 useEffect() 和 useState() 钩子的行为

所以我有这段代码不能按预期工作。当前焦点已在父组件上使用 useState() 设置,因此它是一个状态变量。但是,当父级中的 currentFocus 值发生变化时,此处的焦点变量本身不会更新。我本来期望父组件的重新渲染,反过来重新渲染这个组件会导致 foucs 值发生变化。

现在我可以通过执行以下操作来解决这个问题,

但我只想在更新焦点/当前焦点时运行 useEffect 挂钩,而不是在每次渲染后运行。那么为什么会这样呢?我在这里想了解什么。

另外我之前注意到,如果你做了这样的事情,handleStuff 函数总是使用初始值 100(所以它总是 100 + 10),而不是每次按下一个键时递增 10。我可以通过删除空的 [] 作为 useEffect 中的第二个参数来解决这个问题。但是,我希望 handleStuff 仍然使用最新值更新,因为 eventListner 已经在初始渲染时添加,并且在第二次 keydown 时它应该将 10 添加到 110 而不是 100,但它继续使用初始状态值 100反而。为什么每次都必须清除旧的侦听器并添加新的侦听器才能正常工作?

我对解决方案并不是很感兴趣,我很想了解 useEffect() 和 useState() 钩子在这种情况下如何发挥作用。

0 投票
2 回答
66 浏览

javascript - 状态在反应中没有改变

我做了一个 promise 函数来从 NBA 官方 API 获取 JSON 文件。在这个函数中,我试图更新一个使用状态。但是我在设置状态后一直得到一个空数组。我在看什么?

0 投票
0 回答
43 浏览

reactjs - 通过使用 Jest 在 Router 中将函数作为 props 传递来测试函数

我是新来为反应中的功能组件编写测试用例。我有一个下面的功能组件,我需要为 checkCreated() 函数编写一个测试用例,它在其中调用一个 useState 函数。

有人可以帮助我编写测试用例来覆盖使用路由器的 checkCreated()。