React中的受控组件示例

javascript 复制代码
/**
 * Edit 组件
 * 一个简单的受控输入框组件,用于演示 useState 和事件处理
 */

// 1. 导入 React 核心功能和类型定义
import React, { useState, type FC } from "react";

/**
 * 定义 Edit 组件
 * 使用泛型 FC (FunctionComponent) 来明确这是一个函数组件
 */
const Edit: FC = () => {
  // 2. 状态定义 (State Declaration)
  // 创建一个名为 text 的状态变量,初始值为空字符串
  // setText 是用于更新该状态的函数
  // 使用泛型 <string> 明确 state 的类型为字符串
  const [text, setText] = useState<string>('');

  /**
   * 3. 事件处理函数 (Event Handler)
   * 处理输入框的 onChange 事件
   * 
   * @param event - React 的 ChangeEvent 对象,泛型指定了目标元素类型为 HTMLInputElement
   */
  function handleChange(event: React.ChangeEvent<HTMLInputElement>) {
    // 从事件对象中提取输入框的最新值
    const newValue = event.target.value;
    
    // 更新 React 状态
    // 这会触发组件的重新渲染,使视图与状态保持同步
    setText(newValue);

    // 控制台调试输出,用于开发时查看实时值
    console.log('输入框的值:', newValue);
  }

  // 4. JSX 渲染 (Render)
  // 返回组件的 UI 结构
  return (
    <div>
      <h1>Edit</h1>
      
      {/* 
        输入框 (Input Field)
        - value 属性绑定到 state 变量 `text`,使其成为"受控组件"
        - onChange 监听输入变化,触发 handleChange 函数
      */}
      <input 
        type="text" 
        onChange={handleChange} 
        value={text} 
      />
      
      {/* 显示当前状态的值 */}
      <p>输入的值是: {text}</p>
    </div>
  );
}

export default Edit;

📝 代码逻辑简述

  1. 受控组件模式 :这个输入框是一个受控组件 。这意味着输入框显示的值完全由 React 的状态 (text) 控制,而不是由 DOM 自己维护。用户每一次按键,都会触发 onChange,进而通过 setText 更新状态,状态更新后组件重新渲染,输入框显示新值。
  2. 双向绑定value={text} (读取) 和 onChange={handleChange} (写入) 共同实现了数据的双向绑定。
  3. 类型安全 :使用 React.ChangeEvent<HTMLInputElement> 确保了在 TypeScript 下,event.target.value 能够被正确识别,避免类型错误。
相关推荐
谢尔登1 分钟前
Monorepo 架构
前端·arcgis·架构
啃火龙果的兔子9 分钟前
JavaScript 中的 Symbol 特性详解
开发语言·javascript·ecmascript
栀秋66616 分钟前
你会先找行还是直接拍平?两种二分策略你Pick哪个?
前端·javascript·算法
漂流瓶jz27 分钟前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·css
xhxxx34 分钟前
传统工具调用太痛苦?LangChain 一键打通 LLM 与真实世界
前端·langchain·llm
南山安1 小时前
LangChain学习:Memory实战——让你的大模型记住你
前端·javascript·langchain
BD_Marathon2 小时前
Promise基础语法
开发语言·前端·javascript
BOF_dcb2 小时前
网页设计DW
前端
千寻girling2 小时前
计算机组成原理-全通关源码-实验(通关版)---头歌平台
前端·面试·职场和发展·typescript·node.js
karshey2 小时前
【前端】解决:点击一个button,发现不触发点击事件
前端