问题标签 [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.
javascript - UseState 总是显示以前的值
这是所有新反应开发人员中的一个流行问题,但不知何故我无法理解可用解决方案背后的逻辑。我正在尝试使用钩子更新状态变量并尝试读取更新后的值,但它总是返回以前的值而不是新值。下面是我的代码执行顺序。
单击按钮时,它执行以下代码并更新状态,但console.log
显示旧值。
控制台日志:
- 第一个按钮点击:
点击 ID: 0 accountId: 0
- 第二个按钮点击:
点击 ID:1 accountId:0
谁能告诉我这种行为背后的原因以及如何解决它。
javascript - 使用 UseState Hook 后反应组件不重新渲染
我正在创建一个在屏幕上显示元素列表的反应应用程序。我创建了让用户按名称对元素进行排序的函数。
该功能正常运行,改变了学校的状态;我可以从控制台看到,但元素没有重新渲染。
我认为这是因为 React 在值未更改时不会重新渲染组件,但由于顺序更改后无法找到重新渲染元素的方法。
reactjs - ReactJs UseState:将元素插入数组不更新
我正在尝试使用 React Hooks,但不知何故我的状态没有更新。当我单击复选框时(参见示例),我希望将后者的索引添加到数组selectedItems
中,反之亦然
我的功能如下所示:
你可以在这里console.log
找到结果
结果中的一个空数组,有人可以向我解释我错过了什么吗?
javascript - 为什么我的useEffect反应函数在页面加载时运行,尽管我给了它第二个值数组
为什么我的 useEffect 反应函数在每次页面加载时都运行,尽管给它一个带有query
变量的第二个值数组?
它不应该只在query
状态变量更改时运行吗?除了 useEffect 函数外,我没有其他任何东西使用该getRecipes
函数。
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!!!
我不明白出了什么问题?
reactjs - 可以在 React 中重新定义 useState 中的 updater 函数吗?
我正在研究一个使用商店对象的相当复杂的组件。数据是本地的,因此不保证将其添加到我的 Redux 存储中,但足够昂贵以至于不应该在每次渲染时都计算它。我useState
用来存储和更新这个对象。但是,我有几个关于商店的功能,我想将它们分解成一个新文件,包括更新程序功能。例如,我想做类似的事情:
这会可靠地工作吗,更重要的是,它是否违反了任何规则/反模式?
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,它似乎没有提到这个特殊的解决方法。
javascript - 了解 useEffect() 和 useState() 钩子的行为
所以我有这段代码不能按预期工作。当前焦点已在父组件上使用 useState() 设置,因此它是一个状态变量。但是,当父级中的 currentFocus 值发生变化时,此处的焦点变量本身不会更新。我本来期望父组件的重新渲染,反过来重新渲染这个组件会导致 foucs 值发生变化。
现在我可以通过执行以下操作来解决这个问题,
但我只想在更新焦点/当前焦点时运行 useEffect 挂钩,而不是在每次渲染后运行。那么为什么会这样呢?我在这里想了解什么。
另外我之前注意到,如果你做了这样的事情,handleStuff 函数总是使用初始值 100(所以它总是 100 + 10),而不是每次按下一个键时递增 10。我可以通过删除空的 [] 作为 useEffect 中的第二个参数来解决这个问题。但是,我希望 handleStuff 仍然使用最新值更新,因为 eventListner 已经在初始渲染时添加,并且在第二次 keydown 时它应该将 10 添加到 110 而不是 100,但它继续使用初始状态值 100反而。为什么每次都必须清除旧的侦听器并添加新的侦听器才能正常工作?
我对解决方案并不是很感兴趣,我很想了解 useEffect() 和 useState() 钩子在这种情况下如何发挥作用。
javascript - 状态在反应中没有改变
我做了一个 promise 函数来从 NBA 官方 API 获取 JSON 文件。在这个函数中,我试图更新一个使用状态。但是我在设置状态后一直得到一个空数组。我在看什么?
reactjs - 通过使用 Jest 在 Router 中将函数作为 props 传递来测试函数
我是新来为反应中的功能组件编写测试用例。我有一个下面的功能组件,我需要为 checkCreated() 函数编写一个测试用例,它在其中调用一个 useState 函数。
有人可以帮助我编写测试用例来覆盖使用路由器的 checkCreated()。