美文网首页
表单处理

表单处理

作者: SingleDiego | 来源:发表于2019-08-13 00:10 被阅读0次

我们现在渲染一个 LoginForm 表单来作为例子:

import React, { Component } from 'react';

class LoginForm extends Component {
  state = {
    account: {username: '', password: ''}
  };

  handleSubmit = (e) => {
    e.preventDefault();
    // 一般在这 ajax 请求服务器
    console.log(e);
  };

  handleChange = (e) => {
    let account = {...this.state.account};
    account[e.currentTarget.name] = e.currentTarget.value;
    this.setState({account});
  };

  render() { 
    return (  
      <div>
        <form onSubmit={this.handleSubmit}>
          <div>
            <label htmlFor="username">Username</label>
            <input 
              id='username' 
              name='username'
              type="text" 
              value={this.state.account.username}
              onChange={this.handleChange}
            />
          </div>
          <div>
            <label htmlFor="password">Password</label>
            <input 
              id='password' 
              name='password'
              type="password" 
              value={this.state.account.password}
              onChange={this.handleChange}
            />
          </div>
          <button>Login</button>
        </form>
      </div>
    );
  }
}
 
export default LoginForm;

input 元素中我们设置的 value={this.state.account.username},意味着 input 的值直接从 state 读取,input 中没有了自己的 state,这样的元素叫受控元素。

对于受控元素的 value,不能使用 nullundefined。所以我们初始化 usernamepassword 的时候要使用空字符串。

每一个 form 元素都有一个 onSubmit 事件,这里我们定义为 handleSubmit() 函数。其参数 e 为事件对象本身(事件对象详细见:官方文档)。

函数 e.preventDefault() 表示阻止事件的 HTML 默认行为,比如这里点击按钮后的提交表单发起 HTTP 请求并重载整个页面的行为。

input 标签中的 onChange 事件,当 input 改变后就会执行,其参数 e 也是事件对象本身。我们使用 e.currentTarget 来获取 input 的当前参数(详细见:官方文档),并把它同步到 LoginFormstate 中,以方便对输入数据的进一步处理。

相关文章

  • js事件入门(4)

    4.表单事件 表单事件处理主要用来验证表单,可以处理用户在表单上所做的任何操作。 #4.1.onsubmit事件 ...

  • 《Flask Web开发实战》—— 表单

    Flask关于表单处理的部分,使用Flask-WTF库,首先安装 1. 表单的基本处理 Flask中表单的基本处理...

  • 表单 - 提交按钮

    定义用于向表单处理程序(form-handler)提交表单的按钮。表单处理程序通常是包含用来处理输入数据的脚本的服...

  • Angular

    Form 表单 在开始看angularjs如何处理表单前, 我们先想想处理表单时可能遇到的问题 如何数据绑定 验证...

  • 表单处理

    get方法 需注意的是该方法会重新定向页面,可返回一HTML页面提示用户成功或失败,不过该方法会在用户刷新页面时发...

  • 表单处理

    一、选择并转移导航菜单1.html代码: 2.js代码: 3.output: 二、动态的改变菜单1.html代码:...

  • 表单处理

    我们现在渲染一个 LoginForm 表单来作为例子: input 元素中我们设置的 value={this.st...

  • Angular表单处理

    第七章 表单处理 学习内容: 一.简述模板式表单与响应式表单的不同 Angular表单API 模板式表单简述: ...

  • SpringMVC+Thymeleaf 处理表单提交

    SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不...

  • SpringMVC+Thymeleaf 处理表单提交

    SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不...

网友评论

      本文标题:表单处理

      本文链接:https://www.haomeiwen.com/subject/yboujctx.html