You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么context的operators状态更新后函数内console.log打印旧值?

React Context状态在回调函数中读取旧值问题

我在Context中定义了operators状态,应用启动时会拉取数据并更新该状态。将这份数据传递给自定义函数和选择组件后,选择组件可以正常获取到最新的operators数据,但在自定义函数内执行打印操作时,只会返回初始旧值(空数组)。

相关代码

打印状态的回调函数

const onCallStart = callDetails => {
    console.log('operators', operators)
}

选择组件调用代码

<ProSelect
   placeholder="İstifadəçini seçin"
   data={operators}
   value={selectedOperator}
   onChange={id => setSelectedOperator(id)}
 />

问题原因

该函数此前被传入JSSIP监听器中注册,监听器会保留初始注册时的函数闭包版本,持续读取初始的operators状态,无法跟随Context状态更新获取最新值。

解决方案

将onCallStart函数从JSSIP监听器中抽离,改为用户点击按钮时主动触发调用,即可正常读取到最新的operators状态值。


内容的提问来源于stack exchange,提问作者Tural Hajiyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:42:02