【问题标题】:Why these brackets in this function setFormData({ ...formData, [e.target.name]: e.target.value});? [duplicate]为什么这个函数中有这些括号 setFormData({ ...formData, [e.target.name]: e.target.value});? [复制]
【发布时间】:2021-01-14 06:10:10
【问题描述】:

我的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});

如果有人知道就好了。

【问题讨论】:

标签: javascript reactjs forms onchange form-submit


【解决方案1】:
  • 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}
    

【讨论】:

  • @peewee99 将此回复标记为“已解决”,这可能对其他人有所帮助
猜你喜欢
  • 2018-01-26
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多