You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何点击按钮将输入值传递给父组件?

解决点击按钮后再将输入框值传递给父组件的问题

你当前的实现是在输入框onChange时直接调用父组件的setIpAddress,导致输入内容实时同步到父组件。要改成点击按钮再传递,核心是让子组件先维护自己的输入状态,提交时再把值传给父组件,具体修改如下:

  • 引入useState钩子,在子组件内部创建本地状态存储输入值
  • 修改输入框的onChange事件,只更新本地状态
  • 在表单onSubmit事件中,将本地状态的值传递给父组件,同时可选择清空输入框

修改后的完整代码:

import { useState } from 'react';

const FormInput = ({setIpAddress}) => {     
    const [localIp, setLocalIp] = useState('');
    
    return (
        <div className="formInput">
            <form 
                className="form_container" 
                onSubmit={(e) => {
                    e.preventDefault();
                    // 点击提交时才把本地值传给父组件
                    setIpAddress(localIp);
                    // 可选:提交后清空输入框
                    setLocalIp('');
                }}
            >
                <input 
                    type="text" 
                    id="input" 
                    onChange={(e) => setLocalIp(e.target.value)} 
                    value={localIp} // 绑定本地状态,实现受控组件
                    required={true} 
                    placeholder="Search for any IP address or domain"
                />
                <button type="submit" className="input_btn">
                    <img src={arrow} alt="arrow"/>
                </button>
            </form>
        </div>
    );
};

export default FormInput

关键说明

  • 子组件通过localIp状态单独管理输入内容,输入过程中不会触发父组件的状态更新
  • 只有点击提交按钮时,才会调用setIpAddress将本地输入值传递给父组件
  • value={localIp}将输入框设为受控组件,确保输入框的显示内容和本地状态保持一致

内容的提问来源于stack exchange,提问作者Surge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:15:32