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

Scalajs-react报Cannot read properties of null (reading 'value')错误求助

问题原因

这是React合成事件的池化特性导致的:React会复用合成事件对象,事件触发回调执行完成后,事件对象的所有属性都会被清空重置。你在modState的状态更新回调中访问event.target时,该回调是异步执行的,此时事件对象已经被回收,event.target已经被置为null,因此抛出读取value属性失败的错误。

解决方案

有两种修复方式,推荐使用第一种:

  • 提前从事件对象中取出需要的属性,不要在异步的状态更新回调中访问事件对象
    修改后的updatePersonName代码如下:
def updatePersonName(event: ReactEventFromInput): Callback = {
  // 同步阶段先提取输入值,避免后续异步访问已回收的事件对象
  val newName = event.target.value
  $.modState(person => person.copy(name = newName))
}
  • 若需要保留完整事件对象供后续使用,调用事件的persist()方法将其从事件池中移出,避免被回收:
def updatePersonName(event: ReactEventFromInput): Callback = {
  event.persist()
  $.modState(person => person.copy(name = event.target.value))
}

注意:第二种方式存在额外性能开销,仅在确实需要完整事件对象时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:54:02