我有一个组件,它接受一个 :itemName 并吐出一个包含图像的 html 包。每个捆绑包的图像都不同。
这是我所拥有的:
import React, { Component } from 'react';
import { NavLink } from 'react-router-dom';
import SVGInline from "react-svg-inline";
export default (props) => (
<NavLink className="hex" activeClassName="active" to={'/hex/' + props.itemName}> {React.createElement(SVGInline, {svg: props.itemName})} </NavLink>
)
我怎样才能使这个组件工作?
我知道如果我只是明确地导入我的所有图像,我可以像这样调用我的图像......
import SVGInline from "react-svg-inline";
import SASSSVG from "./images/sass.svg";
<NavLink className="hex" activeClassName="active" to="/hex/sass"><SVGInline svg={ SASSSVG } /></NavLink>
这会起作用,但由于我需要包含约 60 个 svgs,因此它增加了很多多余的代码。
import * as IconID from './icons';
但这似乎不起作用(这是问题的一部分,而不是答案),而且答案有点过于不具体,无法回答我提出的问题。
我也发现了这个问题,但同样有一个答案(虽然未经批准)包含的问题多于它的答案。所以,在安装 react-svg 之后,我设置了一个测试,看看答案是否像这样......
import React, { Component } from 'react';
import ReactDOM from 'react-dom'
import { NavLink } from 'react-router-dom';
import ReactSVG from 'react-svg'
export default (props) => (
<NavLink className="hex" activeClassName="active" to={'/hex/' + props.itemName}>
<ReactSVG
path={"images/" + props.itemName + ".svg"}
callback={svg => console.log(svg)}
className="example"
/>
</NavLink>
)
但是,正如该问题的 OP 所问的那样,即使将我的整个图像文件夹复制到我的构建文件夹中,该页面也找不到我的 svg。我也试过“./images/”
我觉得我只是遗漏了最后一条关键信息,在搜索过去一天之后,我希望有人能找出我遗漏的那条信息。