首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用弹出的创建-react app创建SVG Sprite组件

使用弹出的创建-react app创建SVG Sprite组件
EN

Stack Overflow用户
提问于 2016-09-27 01:24:24
回答 2查看 1.4K关注 0票数 1

我正在使用create-react-app 图书馆,并创建了一个在开发中工作良好的SVG组件。我的问题是,当构建要发布的应用程序时,构建过程不会识别组件的动态路径,因此不会将主sprite文件放入我的/media文件夹中。

示例SVG组件:

代码语言:javascript
复制
render() {
    return (
        <svg className={`icon ${this.props.id}`} fill={this.props.fill}>
            <use xlinkHref={`/src/assets/images/svg-sprite/svg-sprite-${this.props.category}-symbol.svg#ic_${this.props.id}_24px`}></use>
        </svg>
    );
}

如您所见,我在特定的sprite文件中引用特定的符号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-27 10:05:14

如果您在0.5.0之前弹出,importing资产是将它们添加到构建输出中的唯一方法。这有很好的理由:例如,它们的文件名自动包含哈希,因为build system知道它们,所以您不需要担心在文件更改时破坏浏览器缓存。您也不需要担心输入错误,因为缺少的文件会给您带来编译错误。

从0.5.0开始,我们还支持一个public文件夹作为一个转义舱口。您可以将任何文件放入public文件夹中,它们将与构建输出合并。唯一的缺点是,要引用它们,需要将process.env.PUBLIC_URL添加到链接中。这确保了如果您为一个非根URL (如GitHub页面)构建一个项目,它仍然正确工作。

代码语言:javascript
复制
<use linkHref={process.env.PUBLIC_URL + `/assets/images/svg-sprite/svg-sprite-${this.props.category}-symbol.svg#ic_${this.props.id}_24px`}></use>

只要您的public文件夹包含assets/images/svg-sprite/svg-sprite-*文件就可以工作。

请再次注意,这个特性只有在react-scripts@0.5.0之后才可用,所以如果您在前面弹出,可能需要将它移植到您的项目中。

参考资料:

票数 2
EN

Stack Overflow用户

发布于 2016-09-27 02:18:27

万一有人遇到这个问题..。我查看了webpack.config.prod.js,发现了一条评论,其中说您import获得的任何文件都内置到/media文件夹中。修正了我的问题,通过导入我所有的SVG雪碧文件,这并不理想,但完成了工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39714685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档