javascript - 为什么这个函数 setFormData({ ...formData, [e.target.name] : e. target.value}); 中包含这些括号?

标签 javascript reactjs forms onchange form-submit

我的onChange用于提交具有多个输入值的表单的处理程序,并接受给定输入字段的名称属性。所以我基本上知道这段代码的作用,但我不知道到底发生了什么。

为什么 [e.target.name] 中的括号?
我也知道在这种情况下setFormData({ ...formData, name: e.target.value});该函数每次都会用属性名称更改输入字段的值。

const Register = ({ setAlert, register, isAuthenticated }) => {
  const [formData, setFormData] = useState({
    name:"",
    email:"",
    password: "",
    password2: ""
  }); 

  const {name, email, password, password2} = formData;

  const onChange = e => 
    setFormData({ ...formData, [e.target.name]: e.target.value});

如果有人知道就好了。

最佳答案

  • spread operator : ... 用于获取数组或对象的所有属性(当然还有值)

    const arr = ["a", "b","c"];
    
    const arr2 = [...arr, "d"];
    
    // arr2 -> ["a", "b","c", "d"]
    
  • backets 用于将变量值作为属性

    const prop = "myProp";
    const obj = {[prop] : "value"}
    // obj -> {myProp : value}
    

关于javascript - 为什么这个函数 setFormData({ ...formData, [e.target.name] : e. target.value}); 中包含这些括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64105922/

相关文章:

javascript - 在 Backbone.js 中有效实现搜索

javascript - 即使我传递相同的引用,React useState 也会重新渲染?

php - 将日期发布到我的数据库中

javascript - 如何只提交两个表单元素?

javascript - 仅将唯一对象添加到 JavaScript 中的数组

javascript - 设置 React 组件以监听 socket.io

reactjs - 如果我单击 React 中的 RadioButtonGroupInput 标签,如何隐藏其他标签?

javascript - React-native - Alert.alert,发送到实例的无法识别的选择器

angular - 尽管在 Angular 中重置了表单,但输入字段仍被标记为红色

javascript - IONIC 确保服务已加载