为什么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
相关产品推荐
相关产品推荐

