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

React中如何基于prop传递的组件名动态渲染图标组件

React 动态渲染 react-icons 图标方案

实现方法

你导入的* as Icon是包含所有 Feather 图标组件的对象,需要用对象动态属性访问语法获取对应图标,再将其赋值给首字母大写的变量即可作为组件渲染。

修改后的子组件 Button 代码如下:

import React from 'react';
import * as Icon from "react-icons/fi";

import './button.scss';

function Button(props) {
    // 动态取对应图标组件,变量首字母必须大写才能被React识别为组件
    const DynamicIcon = Icon[props.icon];
    return(
        <button>
            {/* 增加判空逻辑避免传入不存在的图标名时报错 */}
            {DynamicIcon && <DynamicIcon />}
        </button>
    )
}

可选优化

  • 增加图标不存在时的兜底逻辑,避免渲染空白:
const DynamicIcon = Icon[props.icon] || Icon.FiAlertCircle;
  • 支持自定义图标尺寸、颜色等属性:
    父组件调用时传递参数:
<Button icon="FiSun" iconProps={{size: 18, color: '#f59e0b'}} />

子组件渲染时透传属性:

{DynamicIcon && <DynamicIcon {...props.iconProps} />}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:48:02