javascript - 在 React 中需要本地图像
问题描述
我正在尝试通过必须从组件的道具获取的路径加载本地 JPG 图像。但是当我尝试这样做时,图像没有加载,它的 src 路径看起来像这样:
Module {default: "/ff5a7601c48dcb99c92acfca45eb2439.png", __esModule: true, Symbol(Symbol.toStringTag): "Module"}
但是当我使用 import 语句时,它会输出正确的路径:
/fa8b72877658d9175b437ebb88e3ef2c.jpg
我不能使用导入,因为我需要获取组件主体中的路径。那么,如何正确加载文件?
有我的 JSX 组件:
import React from 'react';
import { Card } from 'react-bootstrap';
import '../../../resources/scss/style.scss';
class ArticleCard extends React.Component {
constructor(props) {
super(props);
}
render() {
const { article } = this.props;
return (
<Card>
<Card.Img variant="top" src={require(article.imagePath)} />
<Card.Body>
<Card.Title>{article.title}</Card.Title>
<Card.Text>{article.description}</Card.Text>
</Card.Body>
</Card>
)
}
}
export default ArticleCard;
和 webpack.config.js 片段:
{
test: /\.(jpe?g|png|gif|svg|jpg)$/i,
use: {
loader: 'file-loader',
options: {
name: 'client/resources/images/[name].[ext]',
outputPath: 'dist/img/',
},
},
},
解决方案
我找到了解决方案。require
返回一个对象,图像的路径可以从其default
属性中弹出:
<img src={require('path/to/img.png').default} />
推荐阅读
- c# - 如何使用正则表达式验证逗号分隔的字符串
- javascript - 为什么 jQuery html() 方法将内容添加到段落而不是替换它?
- html - flexbox按钮的子节点不以百分比应用高度
- bots - 有没有办法使用 Slack 的 API 加密数据?
- php - Laravel hasManyThrough 多态表不起作用
- google-cloud-firestore - Firestore 按月过滤数据
- windows - Windows 如何在每个处理器上运行?
- c++ - VS 代码:C/C++ 扩展:忽略 includePath,链接到错误的头文件
- limit - libuv下读取数据时如何限制带宽
- node.js - console.log 省略了一些密钥对?