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

如何在React中使用Props避免代码重复?

如何用Props消除React组件中的重复代码

我在编写FindUs组件时,地址、邮箱地址、电话号码模块存在大量重复代码,请问如何通过Props来避免这类重复?原组件代码如下:

import React from "react";
export const FindUs = () => {
  return (
    <div className="p-[6%]">
      <div className=" text-landing-title font-semibold text-4xl "> Find us </div>
      <div>
        <div className=" block text-landing-footer-contactUs text-lg font-medium mb-3 mt-9"> Address </div>
        <div className="text-landing-text font-normal text-sm leading-5 pt-2"> </div>
      </div>
      <div>
        <div className=" block text-landing-footer-contactUs text-lg font-medium mb-3 mt-9"> Email Address </div>
        <div className="text-landing-text font-normal text-sm leading-5 pt-2"> </div>
      </div>
      <div>
        <div className=" block text-landing-footer-contactUs text-lg font-medium mb-3 mt-9"> Phone Number </div>
        <div className="text-landing-text font-normal text-sm leading-5 pt-2"> </div>
      </div>
    </div>
  );
};

解决方案:提取可复用子组件并通过Props传值

1. 创建可复用的ContactItem组件

把重复的模块抽成独立组件,通过title和content两个Props接收动态内容:

import React from "react";

// 可复用的联系项组件
export const ContactItem = ({ title, content }) => {
  return (
    <div>
      <div className="block text-landing-footer-contactUs text-lg font-medium mb-3 mt-9">
        {title}
      </div>
      <div className="text-landing-text font-normal text-sm leading-5 pt-2">
        {content}
      </div>
    </div>
  );
};

2. 重构FindUs组件

用数据数组循环渲染ContactItem,每个元素包含对应标题和内容:

import React from "react";
import { ContactItem } from "./ContactItem"; // 导入子组件

export const FindUs = () => {
  // 定义联系信息数据
  const contactInfo = [
    { title: "Address", content: "你的具体地址内容" },
    { title: "Email Address", content: "your.email@example.com" },
    { title: "Phone Number", content: "+123 456 7890" }
  ];

  return (
    <div className="p-[6%]">
      <div className="text-landing-title font-semibold text-4xl">Find us</div>
      {/* 循环渲染所有联系项 */}
      {contactInfo.map((item, index) => (
        <ContactItem key={index} title={item.title} content={item.content} />
      ))}
    </div>
  );
};

核心优势

  • 消除重复代码:修改样式或结构时只需在ContactItem组件中改一次,所有实例同步更新
  • 提升可维护性:联系信息集中在数组中,后续新增/修改项更便捷
  • 符合React设计思想:将通用UI封装为独立组件,通过Props传递动态数据实现复用

内容的提问来源于stack exchange,提问作者Amir.h Pooladi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:42:42