首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >React状态在我的回调中从未更新过

React状态在我的回调中从未更新过
EN

Stack Overflow用户
提问于 2022-08-09 16:45:52
回答 1查看 60关注 0票数 0

在中,我从api调用setState。然后,我创建一个EventSource,它将在每次收到事件时更新状态。

问题是,在EventSource回调中,状态没有更新。

我的猜测是,状态是在创建回调时打印出来的,因此不能更新。

还有别的办法吗?

代码语言:javascript
运行
AI代码解释
复制
function HomePage() {
    const [rooms, setRooms] = useState<Room[]>([]);

    const getRooms = async () => {
        const data = await RoomService.getAll(currentPage);
        setRooms(data.rooms);
    }

    const updateRooms = (data: AddRoomPayload | DeleteRoomPayload) => {
        console.log(rooms); // rooms is always empty
        // will append or remove a room via setRooms but i need actual rooms first
    }

    useEffect(() => {
        // setState from api response
        getRooms();

        // set up EventSource
        const url = new URL(process.env.REACT_APP_SSE_BASE_URL ?? '');
        url.searchParams.append('topic', '/room');
        const eventSource = new EventSource(url);
        eventSource.onmessage = e => updateRooms(JSON.parse(e.data));
    }, [])

    ...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-09 17:36:54

在使用setRooms时,尝试使用如下功能更新:

代码语言:javascript
运行
AI代码解释
复制
const updateRooms = (data: AddRoomPayload | DeleteRoomPayload) => {
   setRooms((rooms) => {
     if (data.type === 'add') {
       return [...rooms, data.room];
     } else if (data.type === 'remove') {
       return rooms.filter(/* ... */);
     }
   });
}

下面是对useStatehttps://reactjs.org/docs/hooks-reference.html#functional-updates中功能更新的React的引用

如果这不起作用,那么试着检查React开发工具,以确保组件的状态rooms正在更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73299518

复制
相关文章
React useEffect中使用事件监听在回调函数中state不更新的问题
很多React开发者都遇到过useEffect中使用事件监听在回调函数中获取到旧的state值的问题,也都知道如何去解决。这个问题网上很多讲解都是直接讲是因为闭包导致获取到的是旧的state值,讲的不够清晰。我们看下具体的例子来逐步理解这个问题。
DamonLiu
2022/06/27
11.1K0
React回调形式的ref
在React中,我们可以使用回调形式的ref来引用组件或DOM元素。回调形式的ref允许我们在组件渲染后执行自定义的回调函数,并将组件或DOM元素的引用作为参数传递给回调函数。
堕落飞鸟
2023/05/19
6390
回调函数在Java中的应用
关于回调函数(Callback Function),维基百科已经给出了相当简洁精炼的释义。Java的面向对象模型不支持函数,其无法像C语言那样,直接将函数指针作为参数;尽管如此,我们依然可以基于接口来获得等效的回调体验。
程序猿杜小头
2022/12/01
3K0
React技巧之状态更新
原文链接:https://bobbyhadz.com/blog/react-update-state-when-props-change[1]
chuckQu
2022/08/19
9350
React技巧之状态更新
在 localStorage 中持久化 React 状态
我们将创建一个日历应用,就像谷歌日历。这个应用可以让我们在月份、周和日之间进行切换。
Jimmy_is_jimmy
2023/04/22
3.1K0
在 localStorage 中持久化 React 状态
React报错之无法在未挂载的组件上执行React状态更新
原文链接:https://bobbyhadz.com/blog/react-cant-perform-react-state-update-on-unmounted-component[1]
chuckQu
2022/08/19
2.4K0
SystemVerilog中的callback(回调)
在第二次systemverilog实验中,我看到有同学用到了callback函数,今天就是简单讲讲这个方法。
数字IC小站
2020/06/30
2.6K0
java 中的异步回调
异步回调,本来在c#中是一件极为简单和优雅的事情,想不到在java的世界里,却如此烦琐,先看下类图: 先定义了一个CallBackTask,做为外层的面子工程,其主要工作为start 开始一个异步操作
菩提树下的杨过
2018/01/18
3.3K0
java 中的异步回调
iOS中的「回调(callback)」
本文主要参考:《Object-C 编程 Big Nerd Ranch Guide》一书第24章
iOS Development
2019/02/14
3.5K0
javascript异步中的回调
我们之前介绍了javascript异步的相关内容,我们知道javascript以同步,单线程的方式执行主线程代码,将异步内容放入事件队列中,当主线程内容执行完毕就会立即循环事件队列,直到事件队列为空,当用产生用户交互事件(鼠标点击,点击键盘,滚动屏幕等待),会将事件插入事件队列中,然后继续执行。 处理异步逻辑最常用的方式是什么?没错这就是我们今天要说的---回调
陌上寒
2019/04/02
2.2K0
javascript异步中的回调
从未如此了解过Linux
操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。 Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
CC老师
2019/01/23
6420
TS_React:类型化事件回调
今天还是--「TypeScript实战系列」的文章。前面的文章中,我们从不同的角度介绍了,TS是如何结合React进行项目开发的。相关文章如下。
前端柒八九
2022/08/25
1.1K0
TS_React:类型化事件回调
带你找出react中,回调函数绑定this最完美的写法!
在我看来,有若干种this写法,我们通过本文,一步步找优缺点,筛选出最完美的react this写法!(有点小激动)
ACK
2020/03/10
1.6K0
ajax中回调的几个坑
在前端开发中,经常要用ajax去拿后台接口返回的数据,总结几个ajax的回调的常见问题,供大家参考爬坑。
全栈程序员站长
2022/07/21
7500
JavaScript中的回调函数(callback)
被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。
刘亦枫
2020/03/19
7.2K0
asp.net中回发或回调参数无效。在配置中使用 <pages enableEventValidation=”… 问题解决[通俗易懂]
回发或回调参数无效。在配置中使用 <pages enableEventValidation=”…
全栈程序员站长
2022/09/15
2K0
回调
回调简单而言:在一个类(A)的方法(a)中调用另一个类(B)的方法(b),当方法(b)执行完之后就调用类(A)中的方法(c),这就是回调的过程,是不是很简单?简单分析可以知道一个类(A)持有另一个类(B)的引用,方法(c)就叫做回调函数,画成UML图就如下所示:
晚上没宵夜
2020/03/10
2.6K0
JS回调函数中的 this 指向(详细)
1. obj.fun() fun 中的 this->obj ,自动指向.前的对象
TimothyJia
2019/11/12
7.5K0
点击加载更多

相似问题

React组件从未更新过。

11

从回调更新React组件状态

18

更新嵌套setTimeout回调中的React状态

110

React ()在回调时不返回更新状态

10

react setState回调没有更新的状态

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文