Loa*_*ado 4 javascript svg jsx reactjs
我想为我的 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
Run Code Online (Sandbox Code Playgroud)
用法:
import Icon from 'components/Icon';
Run Code Online (Sandbox Code Playgroud)
有用:
class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowDown"}/>
</div>
)}
}
Run Code Online (Sandbox Code Playgroud)
它也有效:
class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowUp"}/>
</div>
)}
}
Run Code Online (Sandbox Code Playgroud)
它呈现ArrowDown图标两次:
class MyComponent extends React.PureComponent {
render() {
return (
<div>
<Icon name={"arrowDown"}/>
<Icon name={"arrowUp"}/>
</div>
)}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:当我使用我的组件两次时,为什么只呈现第一个 SVG 图标多次以及如何修复它?
您的代码运行良好,我已经从中创建了代码片段:
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);
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3802 次 |
| 最近记录: |