gpt4 book ai didi

javascript - 在 ReactJs 中创建动态 svg 图标组件

转载 作者:行者123 更新时间:2023-11-30 13:58:05 27 4
gpt4 key购买 nike

我想为我的 SVG 图标创建一个 React 组件,但如果我在另一个组件中多次使用这个组件(使用不同的属性),它总是呈现相同的图标。

我的 icon.js 组件:

import { ReactComponent as ArrowDown} from '../assets/icons/icons-line-arrrow-down.svg';
import { ReactComponent as ArrowUp} from '../assets/icons/icons-line-arrrow-up.svg';

const iconTypes = {
arrowDown: ArrowDown,
arrowUp: ArrowUp,
}

const IconComponent = ({name, ...props}) => {
let Icon = iconTypes[name];
return <Icon {...props} />;

};

export default IconComponent

用法:

import Icon from 'components/Icon';

有效:

class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowDown"}/>
</div>
)}
}

它也有效:

class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowUp"}/>
</div>
)}
}

它呈现 ArrowDown 图标两次:

class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowDown"}/>
<Icon name={"arrowUp"}/>
</div>
)}
}

所以我的问题是:为什么当我两次使用我的组件时,只有第一个 SVG 图标被渲染了几次,如何修复它?

最佳答案

您的代码运行良好,我已经从中创建了代码片段:

CodeSandbox (JavaScript)

CodeSandbox (TypeScript)

index.js

import React from "react";
import ReactDOM from "react-dom";
import Icon from "./icon";

function App() {
return (
<div>
<Icon name="arrowUp" />
<Icon name="arrowDown" />
</div>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

icon.js

import React from "react";
import { ReactComponent as ArrowDown } from "./arrow-down.svg";
import { ReactComponent as ArrowUp } from "./arrow-up.svg";

const iconTypes = {
arrowDown: ArrowDown,
arrowUp: ArrowUp
};

const IconComponent = ({ name, ...props }) => {
let Icon = iconTypes[name];
return <Icon {...props} />;
};

export default IconComponent;

关于javascript - 在 ReactJs 中创建动态 svg 图标组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com