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

React实现点击AddressOne内按钮添加/删除AddressTwo组件的方法

实现方案

你原来的toggle逻辑是通过状态取反实现单按钮切换,现在只需要把两个按钮的点击逻辑拆分为独立的状态赋值,不需要修改原有条件渲染的核心逻辑即可实现需求:

  • 保留控制组件显隐的布尔类型状态,默认值设为false(即初始不渲染AddressTwo组件)
  • 给+按钮绑定事件:点击时直接将状态设为true,触发AddressTwo组件挂载
  • 给-按钮绑定事件:点击时直接将状态设为false,触发AddressTwo组件卸载

完整可运行代码示例

import { useState } from 'react';
import { Button } from '你项目里的Button组件引入路径';
import AddressTwo from '你项目里的AddressTwo组件引入路径';

const AddressOne = () => {
  // 控制AddressTwo挂载状态:false=卸载,true=挂载
  const [isAddressTwoMounted, setIsAddressTwoMounted] = useState(false);

  return (
    <div className="address-container">
      {/* 此处放置AddressOne组件的其他原有业务内容 */}

      {/* 新增组件按钮 */}
      <Button onClick={() => setIsAddressTwoMounted(true)}>+</Button>
      {/* 移除组件按钮 */}
      <Button onClick={() => setIsAddressTwoMounted(false)}>-</Button>

      {/* 条件渲染:状态为true时挂载AddressTwo,为false时自动卸载 */}
      {isAddressTwoMounted && <AddressTwo />}
    </div>
  );
};

export default AddressOne;

说明:React会自动对相同的state值做比对,重复点击+按钮不会触发重复挂载,重复点击-按钮也不会导致报错,不需要额外加冗余判断。如果后续需要支持添加多个AddressTwo组件,只需要把布尔状态改为数组类型,通过数组方法控制组件列表的增删即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:33:18