当前位置: 首页 > news >正文

React学习第二天——表单控件

表单受控组件

受控组件:是通过数据驱动视图
非受控组件:通过ref获取dom对象,类似于原生js操作

  • 基本表单受控组件
import { useState } from "react"function App(){//定义变量const [data,setData] = useState('')//input事件function handleChange(e){setData(e.target.value)}//按钮提交事件function handleSubmit(){console.log('你提交的内容是'+ data);}return (<div><input type="text" value={data} onChange={handleChange}></input><button onClick={handleSubmit}>提交</button></div>)
}
export default App
  • 对用户输入的内容进行限制
import { useState } from "react"function App(){//定义变量const [data,setData] = useState({value1: '',value2: ''})//input事件function handleChange(e){if(e.target.name === 'one'){//转大写setData({value1: e.target.value.toUpperCase(),})}if(e.target.name === 'two'){//只能输入数字const newVal = e.target.value.split('').map(item=>{if(!isNaN(item)){return item}}).join("")setData({value2: newVal})}}return (<div><input type="text" name="one" value={data.value1} onChange={handleChange} placeholder="转大写"></input><input type="text" name="two" value={data.value2} onChange={handleChange} placeholder="只能输入数字"></input></div>)
}
export default App
  • 文本域
import { useState } from "react"function App(){//定义变量const [data,setData] = useState('')//input事件function handleChange(e){setData(e.target.value)}//按钮提交事件function handleSubmit(){console.log('你提交的内容是'+ data);}return (<div><textarea rows="10" cols="20" value={data} onChange={handleChange}></textarea><button onClick={handleSubmit}>提交</button></div>)
}
export default App
  • 单选和多选框
import { useState } from "react"
function App(){const [checkList,setCheckList] = useState([{content: 'Html',checked:false},{content: 'Css',checked:false},{content: 'JavaScript',checked:false},{content: 'Vue',checked:false},{content: 'React',checked:false},])function handleClick(item,index){item.checked = !item.checkedcheckList.splice(index,1,item)setCheckList([...checkList])}function handleSubmit(){console.log(checkList,'...');}return (<div>{checkList.map((item,index)=>(<div key={index}><input type="checkbox" onChange={(e)=>handleClick(item,index)} value={item.content} checked={item.checked}></input><span>{item.content}</span></div>))}<button onClick={handleSubmit}>按钮</button></div>)
}
export default App
  • 下拉列表
import { useState } from "react"
function App(){const [val,setVal] = useState('HTML')function handleChange(e){console.log(e.target.value);setVal(e.target.value)}return (<div><select value={val} onChange={handleChange}><option value="HTML">Html</option><option value="CSS">css</option><option value="JavaScript">JavaScript</option></select></div>)
}
export default App

非受控组件

import React, { useState } from "react"
function App(){const inputRef = React.createRef()function handleClick(){console.log(inputRef.current.value);}return (<div><input type="text" ref={inputRef}></input><button onClick={handleClick}>按钮</button></div>)
}
export default App
  • 非受控组件默认值
<input type="text" ref={inputRef} defaultValue="默认值"></input>
  • 文件上传
在React中,<input type="file">始终是一个非受控组件,他只能通过用户设置
import React, { useState } from "react"
function App(){const uploadRef = React.createRef()function handleClick(){console.log(uploadRef.current.files[0]);}return (<div><input type="file" ref={uploadRef} onChange={handleClick}/><button onClick={handleClick}>按钮</button></div>)
}
export default App
http://www.dtcms.com/a/412146.html

相关文章:

  • wordpress多站点详细设置(图解)杭州网络科技公司排名
  • 网站建设公司ejiew网站建设的公司哪家好
  • 免费前端模板网站公司加盟
  • ResNeXt-50--分组卷积--J6
  • 【开题答辩全过程】以 “勤工有道”微信小程序为例,包含答辩的问题和答案
  • 淄博网站建设费用摄影网站开发综述
  • 个人模板网站wordpress主题免费吗
  • 基于英飞凌PSOC Control C3的高速吹风机变频控制方案
  • 服装企业网站建设的目的网站宣传搭建
  • 有没有做维修的网站一个服务器可以做两个网站
  • display version 概念、故障排错及题目
  • 沈阳网站开发培训多少钱网站主页布局
  • 快速排名网站系统如何做不同域名跳转同一个网站
  • 网赌网站怎么做网站备案是域名备案还是空间备案
  • 第八章 惊喜12 信息传达
  • 贵池区城乡与住房建设网站做网站 图片格式
  • 济南网站建设推广报价分局网站建设
  • CAD画图:006标注修改
  • Leecode hot100 - 22. 括号生成
  • 【复习】计网每日一题--随机访问
  • [NeurIPS‘25] AI infra / ML sys 论文(解析)合集
  • 网站案例展示2k屏幕的网站怎么做
  • 南宁手机建站模板做网站的作品思路及步骤
  • 太白 网站建设百度显示网站名
  • 网站服务器的选择h5 WordPress
  • 阿里最新开源Wan2.2-Animate-14B 本地部署教程:统一双模态框架,MoE架构赋能电影级角色动画与替换
  • iree的编译
  • 学生制作网站建设 维护wordpress文章怎么生成标签
  • 专业企业网站建设定制wordpress微信分享图片不显示图片
  • 陕煤化建设集团网站云南建设网站首页