Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Rectjs:为什么img';s src无法传递道具?_Reactjs - Fatal编程技术网

Reactjs Rectjs:为什么img';s src无法传递道具?

Reactjs Rectjs:为什么img';s src无法传递道具?,reactjs,Reactjs,我正在将一个道具(包含一个字符串链接)传递到一个组件中。然后,在//的src属性中使用此道具,会导致图像损坏 //导致图像损坏 //很好 ); } } 您需要首先导入图像,然后将其直接用作img元素上的src属性的值,或者将其作为道具传递给其他组件 class Entry extends React.Component { render() { const link = '../../images/company-logo.png'; const i

我正在将一个道具(包含一个字符串链接)传递到一个组件中。然后,在
//的src属性中使用此道具,会导致图像损坏
//导致图像损坏
//很好
);
}
}

您需要首先导入图像,然后将其直接用作
img
元素上的
src
属性的值,或者将其作为道具传递给其他组件

class Entry extends React.Component {


    render() {

        const link = '../../images/company-logo.png';
        const image = require(link);                                //error: cannot find module 
        const imagee = require('../../images/company-logo.png');    //works fine, but not ideal

        return (
        <div className="entry">
           <img src={this.props.imageLink}/>                        //results in a broken image
           <img src={link}/>                                        //results in a broken image
           <img src={imagee}/>                                      //works fine
        </div>
        );
    }
}
<img src={myImg}/> 
现在可以直接使用
myImg
作为
src
属性的值

import myImg from '../../images/company-logo.png';

或者把它作为道具传下去

class Entry extends React.Component {


    render() {

        const link = '../../images/company-logo.png';
        const image = require(link);                                //error: cannot find module 
        const imagee = require('../../images/company-logo.png');    //works fine, but not ideal

        return (
        <div className="entry">
           <img src={this.props.imageLink}/>                        //results in a broken image
           <img src={link}/>                                        //results in a broken image
           <img src={imagee}/>                                      //works fine
        </div>
        );
    }
}
<img src={myImg}/> 

实际上,您可以通过道具传递图像src,但有些地方必须导入图像src。您必须这样做,因为React项目主要使用Webpack来构建代码,并且图像也可以使用JS代码构建

我知道有两种方法可以帮助你解决这个问题

  • 从父组件导入图像并将其传递给子组件:
  • 从“../images/Image-01.png”导入图像;
    函数父组件{
    返回;
    }
    功能组件(道具){
    返回;
    }
    
  • 导入文件夹中的所有图像,并使用
    require.context将其用作图像字典:
  • 函数导入高度(r){
    返回r.keys().map(r);
    }
    const images=importAll(require.context('../images',false,/\(png | jpe?g | svg)$/);
    功能组件(道具){
    const link='image-01.png';//或link=props.parentLink;
    返回;
    }
    
    您可以在中找到有关选项2的更多信息


    希望它能帮助您解决问题。

    这取决于您提供图像的路径和构建工具。此文件相对于您的图像在哪里?您正在使用create react应用程序还是其他什么?您应该使用与index.html文件相关的图像源路径。我的意思是路径应该描述从index.html到图像文件的路径。@NickMcCurdy是的,我正在使用create-react应用程序。链接是图像相对于文件的位置。我的index.js与“images”目录处于同一级别。index.html位于公共目录中。下面是它的样子:public(index.html)、src(images、components、index.js)我不认为这是错的,试试这个:require('../../images/company logo.png')。default;