reactjs - 什么是 onChange={(e) => setName(e.target.value)}?在 React 中

标签 reactjs forms events tags html-formhandler

我是 React 的新手;我正在学习 React Form。我理解代码,但我并不真正理解背后的概念以及为什么我们使用这一行“onChange={(e) => setName(e.target.value)}”。

感谢您的帮助。

他们使用了这个例子:

import ReactDOM from 'react-dom';

function MyForm() {
  const [name, setName] = useState("");

  const handleSubmit = (event) => {
    event.preventDefault();
    alert(`The name you entered was: ${name}`)
  }

  return (
    <form onSubmit={handleSubmit}>
      <label>Enter your name:
        <input 
          type="text" 
          value={name}
          onChange={(e) => setName(e.target.value)}
        />
      </label>
      <input type="submit" />
    </form>
  )
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

最佳答案

这里发生了两件不同的事情。

事件(e)

首先,您有 e,它是 event 的缩写。要了解它的作用,请将 onChange={(e) => setName(e.target.value)} 更改为 onChange={(e) => console.log(e)}。检查日志,您会发现一个事件列表,其中一个是target。打开目标(如果尚未打开)并在目标内,您将找到 value。简而言之,这是在您的输入中键入的目标值,这是用户正在键入的内容。

使用状态

您使用状态来跟踪您输入的值。所以 [name] 是 getter 而 [setName] 是 setter。如果您注意到警报中有 alert(The name you entered was: ${name})。变量 name 是 getter,这意味着它保存状态的当前值。另一方面,setName 将设置该值。它之所以能够这样做,是因为您在此处设置和跟踪更改时的值 onChange={(e) => setName(e.target.value)}

关于reactjs - 什么是 onChange={(e) => setName(e.target.value)}?在 React 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71039088/

相关文章:

reactjs - 通过 GRAPHQL 订阅传递数据仅在其中一个参数上给出 null

reactjs - 使用路线的 Material UI 菜单

带有正负数量的 HTML 表单编号字段

javascript - 如何计算表格中的所有值?

javascript - 向按钮发送点击事件时 $apply 已经在进行中?

c# - .NET对象事件和处置/GC

reactjs - 组件在初始化后正在更改不受控制的 Slider 的默认值状态。具有 Redux 状态的 Material UI slider

javascript - 在 DraftJS 中设置自定义类型

javascript - 清除基于另一个字段的选择字段选项

java - 阻止 java 热键,例如 alt+esc、control-alt-delete