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

如何在React按钮组件中通过图标名称使用react-feather图标?

实现方案

要实现直接传入字符串形式的图标名称来渲染react-feather图标,你可以通过图标映射表的方式来处理,具体步骤如下:

修改AppButton组件

在组件内部维护一个字符串与react-feather图标的映射关系,根据传入的icon字符串动态渲染对应的图标组件:

import React from 'react';
import { Plus, Settings } from 'react-feather';

// 建立图标名称与组件的映射表,键名要和react-feather的组件名完全一致
const iconMap = {
  Plus,
  Settings
};

function AppButton({ icon, text, onclick, iconSize = 20 }) {
  // 根据传入的图标名称获取对应的组件
  const IconComponent = iconMap[icon];

  return (
    <div className="button" onClick={onclick}>
      {/* 仅当存在对应图标组件时才渲染 */}
      {IconComponent && <IconComponent size={iconSize} />}
      <span>{text}</span>
    </div>
  );
}

export default AppButton;

调用组件

现在你可以直接传入字符串形式的图标名称,还能通过iconSize属性自定义图标大小:

import AppButton from './component/AppButton';

function App() {
  return (
    <main className="app">
      <div>
        <AppButton icon="Settings" text="Settings" onclick={()=>console.log("clicked")}/>
        <AppButton icon="Plus" text="Add" iconSize={24} onclick={()=>console.log("add clicked")}/>
      </div>
    </main>
  );
}

export default App;

补充说明

  • 后续需要新增图标时,只需在iconMap中添加对应的键值对,同时导入对应的react-feather组件即可;
  • 如果传入的图标名称在映射表中不存在,组件会自动跳过图标渲染,避免报错;
  • iconSize设置了默认值20,你也可以在调用组件时传入自定义值覆盖默认设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:26