关于拿到input的数据

来源:5-1 用React表单、TS的类型继承和鸭子类型实现登录表单

坡村小码哥

2021-03-05

代码如下

  const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    const username = (event.currentTarget.elements[0] as HTMLFormElement).value; //1
    const password = (event.currentTarget.elements[1] as HTMLFormElement).value; //2
    login({ username, password });
  };

问题

在上述代码的1,2处,event.currentTarget.elements[0]event.currentTarget.elements[1]这两个元素应该都是form下两个div元素对吧,但是value明明是div的子元素input的属性,而且还是第二个子元素,为什么这一步我们可以直接从div中拿到input的value属性呢?请老师解答,谢谢!

写回答

1回答

Nolan

2021-03-07

你可以打印一下event.currentTarget.elements,event.currentTarget.elements[0], event.currentTarget.elements[1],会发现这里读的并不是直接子元素,而是会去找里面的input等元素。form表单本来就是这样运行的

0
1
坡村小码哥
好的谢谢老师!
2021-03-07
共1条回复

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程