React受控组件及其处理

简介: React受控组件及其处理
react受控组件

什么是受控组件呢?值受到react控制的表单元素,值的来源是state,值的去处也是state

例如:input\textarea等

https://zh-hans.reactjs.org/docs/forms.html#controlled-components

class App extends React.PureComponent{
    constructor(props){
        super(props);
        this.state = {
            name: 'lnj'
        }
    }
    render(){
        return (
            <form>
                <input type="text"
                       value={this.state.name}
                        onChange={(e)=>{this.change(e)}}/>
            </form>
        )
    }
    change(e){
        console.log(e.target.value);
        this.setState({
            name: e.target.value
        })
    }
}
export default App;
受控组件的处理技巧
  1. 给每一个受控组件设置一个name
  2. 通过change事件统一控制受控组件的变化

change(e){
        console.log(e.target.name);
        this.setState({
            [e.target.name]: e.target.value
        })
    }

import React from 'react';
class App extends React.PureComponent{
    constructor(props){
        super(props);
        this.state = {
            name: '单佳兰',
            email: '111@qq.com',
            phone: '1223456789'
        }
    }
    render(){
        return (
            <form>
                <input type="text"
                       value={this.state.name}
                       name={'name'}
                       onChange={(e)=>{this.change(e)}}/>
                <input type="text"
                       name={'email'}
                       value={this.state.email}
                       onChange={(e)=>{this.change(e)}}/>
                <input type="text"
                       name={'phone'}
                       value={this.state.phone}
                       onChange={(e)=>{this.change(e)}}/>
            </form>
        )
    }
    change(e){
        console.log(e.target.name);
        this.setState({
            [e.target.name]: e.target.value
        })
    }
}
export default App;
非受控组件

非受控组件可以通过ref拿到元素的值,示例如下:

import React from 'react';
class App extends React.PureComponent{
    constructor(props){
        super(props);
        this.myRef=React.createRef()
    }
    render(){
        return (
            <form onSubmit={(e)=>{this.submit(e)}}>
                        <input type="text"/>
                       <input type='submit'>提交</input>
            </form>
        )
    }
    submit(e){
        e.preventDefault();
        console.log(this.myRef.current.value)
    }
    change(e){
        console.log(e.target.name);
        this.setState({
            [e.target.name]: e.target.value
        })
    }
}
export default App;


目录
相关文章
|
20天前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
57 0
|
11天前
|
监控 前端开发 搜索推荐
react 表单受控的现代实现方案
`react-form-simple`是一个轻量级的React表单库,专注于简化受控表单的开发,提供数据绑定、验证、错误处理和UI更新等功能。它通过简洁的API减少复杂性,支持第三方UI库集成,并具备高度可扩展性。核心特点包括基于Proxy的数据绑定、实时错误处理、高效的UI更新和灵活的使用方式。通过`useForm`和`render`等钩子,开发者可以快速构建表单应用,同时支持动态表单和自定义验证规则。该库旨在提高开发效率,适用于复杂表单场景,降低学习和维护成本。
117 2
react 表单受控的现代实现方案
|
20天前
|
存储 前端开发 JavaScript
React的表单处理:受控组件与非受控组件深入解析
【4月更文挑战第25天】React表单处理涉及受控和非受控组件。受控组件通过状态管理表单数据,每次用户输入都触发状态更新,确保数据同步,适合实时交互但可能影响性能。非受控组件不直接管理状态,数据存储在DOM中,简化代码,适用于更新不频繁的场景,但在数据验证和同步上存在挑战。开发者应根据需求灵活选择。
|
20天前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
19 1
|
20天前
|
前端开发 应用服务中间件 数据库
react服务端组件
react服务端组件
25 0
|
20天前
|
前端开发 JavaScript
快速上手React:从概述到组件与事件处理
快速上手React:从概述到组件与事件处理
|
20天前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
81 1
|
20天前
|
资源调度 前端开发 JavaScript
React组件
React组件
43 0
|
20天前
|
存储 前端开发 JavaScript
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
|
20天前
|
缓存 前端开发 API
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)