在 React 中将道具传递给 <img src="this.prop." /> 时图像未加载
Image not loading when passing a prop to <img src="this.prop." /> in React
当我将道具传递给 img 的属性 src 时,我有一个关于 link 没有加载我的图像的问题。我试过将 require() 包裹在我的 link 周围,但它没有用。
我有一个庞大的产品库,使用图像加载器手动导入图像是不可行的。
因此,有没有办法使用 src 属性中的 props 加载图像?
我正在使用 NODE_PATH=src/
感谢您的帮助!
export const productLib = [{
ID: "001",
name:"product name",
src: "lib/productLib/img/product_name",
color: "",
...
}, {...}]
import React from 'react';
export class Products extends React.Component {
render() {
return(
<div className="products">
<img src={this.props.product.src} width="50" />
<h6>{this.props.product.name}<span className={`block ${this.props.product.color}`}></span></h6>
</div>
)
}
}
我认为问题与您将 url 发送到组件的方式有关。
"lib/productLib/img/product_name" 不是 url,也不是相对的 url。
您可以使用导入来获取图像。
import React from 'react';
import logo from './logo.png'; // Tell webpack this JS file uses this image
console.log(logo); // /logo.84287d09.png
function Header() {
// Import result is the URL of your image
return <img src={logo} alt="Logo" />;
}
export default Header;
如果您使用的是 react-create 应用程序
他们为您解决问题:
https://create-react-app.dev/docs/adding-images-fonts-and-files/
根据 Xuscrus 的推荐,我使用 public 路径链接我的图像。为了使此解决方案起作用,我必须删除我的绝对路径。
我将我所有的图像移动到我的 create-react-app 的 public 文件夹中名为 "img" 的文件夹中。
根据我最初陈述中使用的示例,这是我找到的最简单的解决方案:
import React from 'react';
export class Products extends React.Component {
render() {
return(
<div className="products">
<img src={`/img/${this.props.product.src}.png`} width="50" />
<h6>{this.props.product.name}<span className={`block ${this.props.product.color}`}></span></h6>
</div>
)
}
}
我的解决方案的主要参考是这个post(正确答案中的URL方法):
我遇到了一个类似的问题,事实上我当时正在寻找解决方案,但我自己想出来了我将图像存储在一个单独的文件夹中,我将它们导入数据文件,然后将其传递给我需要它的组件,但图像没有显示。
我所做的只是
//img is the variable I'm getting the image path at
console.log(img)
返回
Module {default: "/static/media/svg-1.af890272.svg", __esModule: true,
Symbol(Symbol.toStringTag): "Module"}
default: "/static/media/svg-1.af890272.svg"
Symbol(Symbol.toStringTag): "Module"
__esModule: true
[[Prototype]]: Object
在模块对象中获取它后,我看到了默认值,所以就这样做
img = img.default
现在你可以在 src 中传递它
从 'react' 导入 React;
<img src={img} width="50" />
当我将道具传递给 img 的属性 src 时,我有一个关于 link 没有加载我的图像的问题。我试过将 require() 包裹在我的 link 周围,但它没有用。
我有一个庞大的产品库,使用图像加载器手动导入图像是不可行的。
因此,有没有办法使用 src 属性中的 props 加载图像?
我正在使用 NODE_PATH=src/
感谢您的帮助!
export const productLib = [{
ID: "001",
name:"product name",
src: "lib/productLib/img/product_name",
color: "",
...
}, {...}]
import React from 'react';
export class Products extends React.Component {
render() {
return(
<div className="products">
<img src={this.props.product.src} width="50" />
<h6>{this.props.product.name}<span className={`block ${this.props.product.color}`}></span></h6>
</div>
)
}
}
我认为问题与您将 url 发送到组件的方式有关。
"lib/productLib/img/product_name" 不是 url,也不是相对的 url。
您可以使用导入来获取图像。
import React from 'react';
import logo from './logo.png'; // Tell webpack this JS file uses this image
console.log(logo); // /logo.84287d09.png
function Header() {
// Import result is the URL of your image
return <img src={logo} alt="Logo" />;
}
export default Header;
如果您使用的是 react-create 应用程序
他们为您解决问题: https://create-react-app.dev/docs/adding-images-fonts-and-files/
根据 Xuscrus 的推荐,我使用 public 路径链接我的图像。为了使此解决方案起作用,我必须删除我的绝对路径。
我将我所有的图像移动到我的 create-react-app 的 public 文件夹中名为 "img" 的文件夹中。
根据我最初陈述中使用的示例,这是我找到的最简单的解决方案:
import React from 'react';
export class Products extends React.Component {
render() {
return(
<div className="products">
<img src={`/img/${this.props.product.src}.png`} width="50" />
<h6>{this.props.product.name}<span className={`block ${this.props.product.color}`}></span></h6>
</div>
)
}
}
我的解决方案的主要参考是这个post(正确答案中的URL方法):
我遇到了一个类似的问题,事实上我当时正在寻找解决方案,但我自己想出来了我将图像存储在一个单独的文件夹中,我将它们导入数据文件,然后将其传递给我需要它的组件,但图像没有显示。
我所做的只是
//img is the variable I'm getting the image path at
console.log(img)
返回
Module {default: "/static/media/svg-1.af890272.svg", __esModule: true,
Symbol(Symbol.toStringTag): "Module"}
default: "/static/media/svg-1.af890272.svg"
Symbol(Symbol.toStringTag): "Module"
__esModule: true
[[Prototype]]: Object
在模块对象中获取它后,我看到了默认值,所以就这样做
img = img.default
现在你可以在 src 中传递它
从 'react' 导入 React;
<img src={img} width="50" />