📜  控制组件的数据类型有哪些?

📅  最后修改于: 2022-05-13 01:56:42.069000             🧑  作者: Mango

控制组件的数据类型有哪些?

组件是 React 的核心构建块之一。换句话说,组件是一个 JavaScript函数,它接受输入(props)并返回一个 React 元素,表示 UI 的一部分应该看起来如何。

受控组件:表单数据由组件下的状态处理。当客户端/用户提交表单时,表单具有浏览到新页面的默认 HTML 表单行为。如果你需要在 React 中进行类似的操作,它可以工作。然而,作为一项规则,拥有一个处理表单调整并处理客户端/用户提交到表单中的信息的 JavaScript函数会很有帮助。完成此操作的标准方法是使用称为“受控组件”的程序。

为什么要使用受控组件:您需要为您的信息可以更改的每种方式编写一个事件处理程序,并通过 React 组件排列整个输入状态。

表单数据包括:

  • 文本输入
  • 数字输入
  • 无线电输入
  • 复选框输入
  • 文本区域
  • 选择

创建反应应用程序:

  • 第 1 步:在终端/命令提示符下使用以下命令创建一个 React 应用程序:

    create-react-app foldername
  • 第 2 步:创建项目文件夹(即文件夹名称)后,使用以下命令移动到该文件夹:

    cd foldername

项目结构:它将如下所示:

示例 1:现在在 App.js 文件中写下以下代码。在这里,App 是我们编写代码的默认(父)组件。

App.js
import React, {Component}  from 'react';
  
class App extends React.Component {
  constructor(props) {
    super(props);
      
    this.onChange = this.onChange.bind(this);
      
    this.state = {
      name: ''
    };
  }
    
  onChange(e) {
    this.setState({
      name: e.target.value
    });
  }
    
  render() {
    return (
      
                        
    )   } }       export default App;


App.js
import React, { Component } from 'react';
  
class App extends Component {
    state = {
        message: ''
    }
    updateMessage = (newText) => {
        console.log(newText);
        this.setState(() => ({
            message: newText
        }));
    }
    render() {
        return (
            
                
                     this                           .updateMessage(event.target.value)}                     />                     

Message for GFG: {this.state.message}

                
            
        );     } }    export default App;


上面的示例显示了 value 属性如何表征输入的当前值以及 onChange 事件处理程序如何使用客户端的信息/输入更新组件的状态。

输出:表单输入应该被描述为可以想象的受控组件。这保证了组件状态和输入值始终处于和谐状态,无论该值是否由客户端输入以外的触发器更改。

表单输入

示例 2:现在在 App.js 文件中写下以下代码。在这里,App 是我们编写代码的默认(父)组件。

应用程序.js

import React, { Component } from 'react';
  
class App extends Component {
    state = {
        message: ''
    }
    updateMessage = (newText) => {
        console.log(newText);
        this.setState(() => ({
            message: newText
        }));
    }
    render() {
        return (
            
                
                     this                           .updateMessage(event.target.value)}                     />                     

Message for GFG: {this.state.message}

                
            
        );     } }    export default App;

输出:在此示例中,组件在页面上呈现一个文本框,并重复客户端在文本框中键入的任何内容。创建了一个状态对象,它包含一个名为message的属性。这是存储用户在给定文本框中输入的值的地方。此外,还声明了 onChange 事件处理程序以控制组件。

受控组件