【问题标题】:React JS - Why do I need to assign e.target to a const to use e.target.value? [duplicate]React JS - 为什么我需要将 e.target 分配给 const 才能使用 e.target.value? [复制]
【发布时间】:2020-05-23 04:32:28
【问题描述】:

在 React JS 中做一些练习并注意到我需要将 e.target 分配给一个变量才能使用它 - 但为什么呢?第一个代码 sn-p 给了我错误:“TypeError:无法读取 null 的属性'输入'”。 我很困惑。

handleSubmit = (e) => {
        e.preventDefault()
        console.log("Added")
        this.setState((prevState) => {
            return {
                items: prevState.items.concat([e.target.input.value]) // does not work
            }
        })
    }
handleSubmit = (e) => {
        e.preventDefault()
        console.log("Added")
        const target = e.target
        this.setState((prevState) => {
            return {
                items: prevState.items.concat([target.input.value]) // This works. Why?
            }
        })
    }

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    由于 Setstate 是一个异步进程,并且由于 React 的事件池,事件的范围将在 setState 执行时丢失,除非您使用 event.persist()。

    您可以阅读有关 React 事件池的更多信息:https://reactjs.org/docs/events.html

    【讨论】:

      【解决方案2】:

      我相信是因为您在 setState() 的回调函数中读取e。 setState() 可能已经重新渲染了 DOM,并且 'e' 可能不再具有目标或值。

      【讨论】:

      • 请不要在“五月”内给出答案。它增加了很多对概念的混淆和误解
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2013-10-02
      • 1970-01-01
      • 2020-12-25
      • 2023-04-02
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多