将state与表单项中的value值绑定在一起,有state的值来控制表单元素的值,称为受控组件。

绑定步骤:

  • 在state中添加一个状态,作为表单元素的value值
  • 给表单元素绑定change事件,将表单元素的值设置为state的值

<input type="text" value={this.state.username} onChange={this.inputChange.bind(this)} />

注:多表单元素需优化事件方法

this.setState({

[e.target.name]: e.target.value

})

import React, { Component } from 'react'

export default class User2 extends Component {

  state = {
userinfo: {
username: 'admin',
password: '',
isSave: true,
sex: '女'
}
} render() {
let { username, password, isSave, sex } = this.state.userinfo
return (
<div>
<div>
{/* 受控组件 */}
{/* 表单选项中的值都是string */}
<input type="text" name="username" value={username} onKeyUp={this.addUser.bind(this)} onChange={this.setInput.bind(this)} />
</div>
<div>
{/* 受控组件 */}
{/* 表单选项中的值都是string */}
<input type="text" name="password" value={password} onKeyUp={this.addUser.bind(this)} onChange={this.setInput.bind(this)} />
</div> <div>
{/* 不需要value中的数据 同时它还需要true/false布尔类型 */}
<input type="checkbox" name="isSave" checked={isSave} onChange={this.setInput.bind(this)} />是否保存数据
</div> <div>
<input type="radio" name="sex" checked={sex === '男' ? true : false} value="男" onChange={this.setInput.bind(this)} />男
<input type="radio" name="sex" checked={sex === '女' ? true : false} value="女" onChange={this.setInput.bind(this)} />女
</div> </div>
)
} // 把input中的数据同步到state数据源中
setInput(evt) {
// 表单项名称 变量 => 变量的值才是对象中的key
let name = evt.target.name // 获取表单项中的数据
let value = evt.target.value // 复选框 它需要boolean类型
if ('checkbox' === evt.target.type) {
value = !this.state.userinfo[name]
} // 同步到state数据源中
this.setState(state => state.userinfo[name] = value)
} addUser(evt) {
if (evt.keyCode === 13) {
console.log('提交了数据', this.state.userinfo);
this.setState(state => state.userinfo.username = '')
}
// console.log(this.state.userinfo);
} }

react表单处理 受控组件的更多相关文章

  1. react 表单(受控组件和非受控组件)

    我们知道表单元素与其他的普通DOM元素来说是不一样的,它们保存了自己的一些状态. 我们主要说的就是表单元素中的受控组件和非受控组件. 受控组件就是这个组件的状态是我们(react)控制的,这个组件的行 ...

  2. 翻译 | 玩转 React 表单 —— 受控组件详解

    原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 译者:小 B0Y 校对者:珂珂君 本文涵盖以下受控组件: 文本输入框 数字输 ...

  3. 七、React表单详解 约束性和非约束性组件 input text checkbox radio select textarea 以及获取表单的内容

    一.约束性和非约束性组件: 非约束性组: MV: <input type="text" defaultValue="a" /> 这个 default ...

  4. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

  5. react 表单获取多个input

    react  表单this.handleChange(key,e){ [key]:e.target.value} submit=()=>{ const {userName,age,status} ...

  6. 028、HTML 标签3表单标签插入组件

    内容:表单标签插入组件(经常使用)############################################################## form表单标签和input组件 < ...

  7. vue+element 表单封成组件(1)

    作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...

  8. React 表单组件

    诸如 <input>.<textarea>.<option> 这样的表单组件不同于其他组件,因为他们可以通过用户交互发生变化.这些组件提供的界面使响应用户交互的表单 ...

  9. [转]React表单无法输入原因----约束性和非约束性组件

    转自:http://blog.csdn.net/lihongxun945/article/details/46730835 表单是前端非常重要的一块内容,并且往往包含了错误校验等逻辑. React对表 ...

  10. react 表单受控和非受控

    参见:https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ 非受控: onSubmit = ()=>{ const val ...

随机推荐

  1. CentOS7.9 systemctl

    目录 命令格式 语法 加载配置文件 关机和开机 unit 文件存放位置 unit 格式说明 service unit file 文件构成部分 unit 段的常用选项 service 段的常用选项 in ...

  2. Oracle SQL 常用的将varchar数据处理成number的正则

    Oracle SQL 常用的数据处理正则 去除所有的空格 replace(t.dxmz,chr(32),'') 匹配非纯数字 not regexp_like(t.zgbs,'^[[:digit:]]* ...

  3. Llama3-8B到底能不能打?实测对比

    前几天Meta开源发布了新的Llama大语言模型:Llama-3系列,本次一共发布了两个版本:Llama-3-8B和Llama-3-70B,根据Meta发布的测评报告,Llama-3-8B的性能吊打之 ...

  4. 社区首款 OAM 可视化平台发布!

    作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 导读:什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总 ...

  5. 全面提升易用性:OpenClusterManagement 0.7 版本发布

    ​简介:千呼万唤始出来,三月末 OpenClusterManagement 社区正式发布了 v0.7 版本.在新的版本有一系列新的功能特性欢迎感兴趣的读者体验探索,同时在这个版本中社区维护者对目前已有 ...

  6. 云原生时代如何用 Prometheus 实现性能压测可观测-Metrics 篇

    ​简介:可观测性包括 Metrics.Traces.Logs3 个维度.可观测能力帮助我们在复杂的分布式系统中快速排查.定位问题,是分布式系统中必不可少的运维工具. 作者:拂衣 什么是性能压测可观测 ...

  7. Spring Cloud Gateway一次请求调用源码解析

    简介: 最近通过深入学习Spring Cloud Gateway发现这个框架的架构设计非常简单.有效,很多组件的设计都非常值得学习,本文就Spring Cloud Gateway做一个简单的介绍,以及 ...

  8. Windows 查看端口是被什么程序占用

    netstat -ano | grep 27017 tasklist | grep 11496 Link:https://www.cnblogs.com/farwish/p/15262813.html

  9. dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 用户设备上不存在 Arial 字体将导致应用闪退

    本文来告诉大家 WPF 已知问题,在用户的设备上,如果不存在 Arial 字体,同时安装了一些诡异的字体,那么也许就会让应用在使用到诡异的字体的时候,软件闪退 在 WPF 的 FontFamily.c ...

  10. vue从事件修饰符的角度讨论如何合理的设计一个弹窗

    1.设计思路:弹窗一般可以通过封装,单独设计一个组件,在需要的地方引入并通过变量布尔值进行展示和隐藏,方便使用者进行交互或提示信息 具体操作就是在给这个组件背景层添加全屏固定定位并设置透明度(cove ...