热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无控制与受控输入的反应

无控制与受控输入的反应原文:https://www.gees

无控制与受控输入的反应

原文:https://www . geesforgeks . org/react-js-uncontrolled-vs-controlled-inputs/

在 HTML 中,像、、等表单元素通常会维护自己的状态,并根据用户输入进行更新。在 React 中,一个可变的状态通常保存在组件的状态属性中。
在反应表单中,根据您的选择,输入值可以有两种类型:非受控值和受控值。
不受控输入:输入值不受控时,不存在任何状态的更新或改变。它保持自己的内部状态,这基本上意味着它会记住您在字段中键入的内容。该值可以通过在需要使用时使用 ref 关键字提取来利用。在不受控制的输入中,你提交的值就是你得到的值。

现在,打开您的 react 项目并编辑 src 文件夹中的 index.js 文件:

src index.js:

java 描述语言

import React from 'react';
import ReactDOM from 'react-dom';
import NameForm from './NameForm';
ReactDOM.render(
  
    
  
,
  document.getElementById('root')
);

在 react 项目中创建一个组件名:

现在,打开您的 react 项目,在 src 文件夹中编辑 NameForm.js 文件:

src 名称表单:

java 描述语言

import React,{Component} from 'react';
class NameForm extends  React.Component {
    handleClick = () => {
      const name = this._name.value;
      alert('Hello ', name);
    }
    render() {
      return (
        


                          {inputValue => this._name = inputValue}
            placeholder="Enter your name" />
            
        

     );
    }
  }
export default NameForm;

输入:谷莎
输出:你好谷莎(显示在提醒框上)

受控输入:在受控输入中,字段中随时都会发生某种变化和修改,输入的每一个字符,甚至退格之类的东西都会被视为变化。输入字段的当前值将是类组件的一个属性(通常它将处于通过使用 this.state.varName 引用的状态),因为它们不维护它们的内部状态。还有一个回调函数(如 onChange、onClick 等),它是处理输入字段中发生的变化(值的变化)所必需的,这使得它们是可控的。
现在,打开你的 react 项目,编辑 src 文件夹中的 NameForm.js 文件:
src NameForm.js:

java 描述语言

import React,{Component} from 'react';
class NameForm extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            name: '',
        };
    }
    handleNameChange = (event) => {
        this.setState({ name: event.target.value });
    };
    render() {
        return (
            


                                        {this.handleNameChange}
                        placeholder="Enter your name" />
                

{this.state.name}


            

        );
    }
}
export default NameForm;

输入:塔尼莎
输出:塔尼莎(用户键入时在屏幕上逐字母显示)

哪个更好?
很明显,受控和非受控表单域都有各自的好处。根据情况需要,您可能需要同时使用这两种方法或其中一种。如果您正在制作一个很少或没有用户界面反馈的简单表单,并且不需要即时验证(这意味着您只需要在提交时验证和/或需要值),那么您应该使用带有引用的不受控制的输入。它将把真理的来源保存在 DOM 中,使它更快,需要更少的代码。如果您需要更多的用户界面反馈,并考虑到特定输入字段中的每一个微小变化,请选择受控输入。


推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
author-avatar
南航爱心社
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有