首页 > 其他分享 >React的受控组件与非受控组件

React的受控组件与非受控组件

时间:2023-02-01 18:13:58浏览次数:43  
标签:受控 username React state 组件 password event

收集表单数据

受控组件

在 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>
                )
            }
        }

标签:受控,username,React,state,组件,password,event
From: https://www.cnblogs.com/ucbb/p/17083755.html

相关文章

  • cra react18 ts 自定义hooks 单元测试
    首先创建cra项目如果报错说最新的create-react-app版本是5.x,而你的是4.x的话需要先卸载,再重新安装sudonpmuninstall-gcreate-react-appsudonpminst......
  • react的合成事件
    react自己有一套自己的事件机制,它在DOM事件体系基础上做了改进,减少了内存消耗,并且最大程度的消除了ie等浏览器的不兼容问题。它的特点有以下几个:react上注册的事件最终会......
  • Flume 组件(source、channel、sink)远程调试
    1.创建Maven工程2.编写所需要自定义组件的代码(以Source为例),打包放到服务器上3.添加ideaDebug配置4.在服务器上广播Debug端口[atguigu@hadoop102flume]$exportFLUME_JA......
  • vue3 自定义组件中使用 v-model
    1、直接绑定v-model,但是Props要固定为modelValue组件D:注意这里的Props和Emits,必须使用Vue提供的defineProps()和defineEmits()。如果父组件想要使用v-mod......
  • react-vant 使用
    react-vant是vantUI针对react的UI版本,可以帮助我们搭建react移动端页面安装:npminstallreact-vantlist组件使用import{List}from'react-vant';例子/*eslint-d......
  • React框架运行机制
    React框架运行主流程1.JSX是JS语言的扩展,被babel编译后,会转换成React.creatElement(),这个方法返回的是一个虚拟DOM。2.将虚拟DOM渲染到真实DOM的方法是ReactDom.render()......
  • react官方文档-高级部分-Render Props学习(重要)
    前言:术语“renderprop”是指一种在React组件之间使用一个值为函数的prop共享代码的简单技术 具有renderprop的组件接受一个函数,该函数返回一个React元素并......
  • 父子组件通讯三种方式
         ......
  • NET 实现 Cron 定时任务执行,告别第三方组件
    原文连接:(96条消息)NET实现Cron定时任务执行,告别第三方组件_.net定时任务_PhilArist的博客-CSDN博客 代码:usingSystem.Globalization;usingSystem.Text;us......
  • react 高效高质量搭建后台系统 系列 —— 系统布局
    其他章节请看:react高效高质量搭建后台系统系列系统布局前面我们用脚手架搭建了项目,并实现了登录模块,登录模块所依赖的请求数据和antd(ui框架和样式)也已完成。本篇将......