问题标签 [use-reducer]
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 - 使用 useReducer 和 MongoDB 的待办事项列表 - 在 Reducer 操作后更新数据库?
我尝试将我的 Todolist 与 MongoDB 连接以存储我的数据。由于不建议在减速器中获取和更新数据,我对在哪里更新数据库有点困惑。
我的想法是,每当我使用操作更改列表时,我都需要替换数据库上的整个列表,这对我来说似乎效率不高。但是,当我只更新数据库中已更改的元素时,我看不到使用 useReducer 的理由。
有人可以帮助我如何继续吗?:/
(这个 Todolist 在我尝试使用 useReducer 之前使用的是 useStates 和 MongoDB,这就是为什么 Routes 和 APIhelper 包含其他功能)
应用程序.js:
Todo.js:
APIHelper.js:
路线.js:
javascript - 反应 useReducer 不更新状态
我useReducer
用来更新errorsState
用户登录并失败的时间。我读过很多解决方案,据说dispatch
是异步的,我知道,所以我把它console.log
放进useEffect
去看看errorsState
变化,但不幸的是它没有改变。这是我的代码
登录.jsx
这是获取功能useLogin
AuthAction.js
我试过放在console.log
里面ERRORS_ACTIONS.GET_ERRORS
看看反应,很好。那么我哪里出错了?
javascript - 使用减速器在 useEffect() 中反应无限循环
如果有应该播放的消息声音,我有一个useEffect()
检查触发器布尔值的状态,并在播放后将活动消息触发器设置为 false 状态。
但是,useEffect() 进入了一个无限循环,导致应用程序崩溃。可能是因为更改状态会再次触发它(并且再次...)
通常,使用 useState,这很容易用类似的东西来修复useEffect(() => {logic}, [trigger])
就我而言,我没有使用 useState,但我正在使用减速器来更改状态。
Edit: The weird thing is, the reducer sometimes works to modify state, and sometimes it does not. It will execute without errors but the state remains unchanged.
让我向您展示我的注释代码:
如您所见,我不使用 useState 而是使用 reducer。据我所知,我经常发现的与以下类似的解决方案不是我的解决方案:
编辑:由于reducer在useEffect中使用时似乎没有修改状态,让我发布它的代码:
javascript - 无法从 setTimeout 中定义的函数中的 useReducer 挂钩访问更新的数据
在我的应用程序中,我在单击按钮时使用来自 useReducer 钩子的调度,在同一个函数中,我使用了 2 秒的 setTimeout。但是当我使用 usereducer 的调度存储数据时,我没有在 setTimeout 函数中获得更新的值。
我无法共享原始代码,但可以共享出现此问题的另一个演示应用程序的片段。
在上面的示例中,我使用调度将数据存储在减速器中,并且我在 2 秒后在按钮单击上调用 console.log("ButtonClick") 但即使在 2 秒后,我也没有在控制台中获取更新的数据。但是在 console.log("Render") 我得到更新的数据。
reactjs - 如何从 useState 更改为 useReducer
以下代码我试图将其转换为 useReducer 但我无法弄清楚的几件事。在以下代码中,handleClick 更新状态并调用其他函数以进行进一步操作。在 useReducer 中,我可以更新状态但如何调用其他函数。
使用减速器
javascript - reducer - 更新完整状态
我想向减速器添加一个案例,我想在其中设置完整状态,而不是任何特定属性。
更新特定属性 [ SET_SELECTED_PAGE,UPDATE_MESSAGE_DISPLAYED
] 工作正常。但是当我尝试时SET_INIT_DATA
我得到错误Parsing error: Unexpected token, expected ","
。有效负载SET_INIT_DATA
将具有完整的 json。
我的状态会像
代码:
reactjs - 是否可以在单个按钮上的 useReducer hook 的 reducer 功能中管理不同的 switch case?
我有一个问题“制作一个具有 4 个级别的灯的“房间”——关闭、低、中、高——并在每次按下按钮时更改级别。创建第二个按钮来关闭灯。 我假设我需要通过按下一个按钮来管理三个级别,即低、中、高,就像我们切换状态一样,并且必须使用另一个按钮来关闭灯。但我的知识仅限于在单独的按钮上管理减速器的每个开关盒。
javascript - 为什么在 useReducer 钩子中使用 switch 语句来管理状态?
让我们看看以下两种使用useReducer
钩子进行状态管理的方法,它们都做同样的事情:单击添加按钮到+ 1,然后单击减法按钮到-1:
- 带开关:
- 无开关
哪一个是更好的管理状态的方法?我更喜欢 2 因为它更简单,允许我们以“类组件”的方式管理状态。我不明白为什么需要 1:它需要一个复杂的 switch 语句;如果要添加状态,则需要一个新案例。这一切看起来都很麻烦。
编辑:我知道这是一个不需要使用useReducer
并且useState
更好的简单示例,但我真正想讨论的是,当有多个状态时,哪个更好?
javascript - 创建用于将 useReducer 组合和使用到另一个组件中的高阶函数给我一个错误
我想创建一个包含 useReducer 钩子作为单例的高阶函数,以便与其他组件复合。但我得到一个错误:
我的霍夫:
并尝试撰写:
我哪里做错了 ?