React的受控组件与非受控组件
收集表单数据
受控组件
在 HTML 中,表单元素(如input、 textarea 和 select)通常自己维护 state,并根据用户输入进行更新。而在 React 中,可变状态(mutable state)通常保存在组件的 state 属性中,并且只能通过使用 setState()来更新
通过event.target获取当前节点
// 随着输入,将数据存储在state中,然后从state中取数据 class Demo extends React.Component { // 状态初始化 state = { username: '', password: '' } handleSubmit = (event) => { event.preventDefault();// 阻止表单提交 const { username, password } = this.state; console.log(username, password); } saveUsername = (event) => { this.setState({ username: event.target.value }); } savePwd = (event) => { this.setState({ password: event.target.value }) } render() { return ( <form onSubmit={this.handleSubmit}> 用户名: <input type="text" onChange={this.saveUsername} name="username" /> 密码: <input type="password" name="password" onChange={this.savePwd} /> <button>登录</button> </form> ) } }
非受控组件
输入类DOM,现用现取,不通过state
// 输入类DOM,现用现取 class Demo extends React.Component { handleSubmit = (event) => { event.preventDefault();// 阻止表单提交 const { username, password } = this; alert(`用户名: ${username.value} + 密码:${username.value}`); } render() { return ( <form onSubmit={this.handleSubmit}> 用户名: <input type="text" name="username" ref={(c) => { this.username = c }} /> 密码: <input type="password" name="password" ref={(c) => { this.password = c }} /> <button>登录</button> </form> ) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!