首页 > 解决方案 > useState 方法不允许访问外部变量?

问题描述

想知道为什么以下不起作用:

  const onChange = e => {
    console.log(e.target.value)
    setEmails(prevEmails => ({
      ...prevEmails,
      reports: e.target.value
    }))
  }

事件 'e' 变量 console.logs 但在 setEmails 中使用时说找不到 null 值?确切的错误:

Cannot read property 'value' of null

我在这里想念什么?

标签: javascriptreactjs

解决方案


您应该将值保存到另一个变量,或使用e.persist()

const onChange = e => {
    console.log(e.target.value);
    let myValue = e.target.value;
    setEmails(prevEmails => ({
        ...prevEmails,
        reports: myValue
    }))
}

这是因为在 React中出于性能原因使用合成事件。从文档的事件池部分:

SyntheticEvent是汇集的。这意味着该SyntheticEvent对象将被重用,并且在调用事件回调后所有属性都将被取消。这是出于性能原因。因此,您不能以异步方式访问事件。


推荐阅读