150 votes

Comment importer une image (.svg, .png) dans un composant React ?

J'essaie d'importer un fichier image dans un de mes composants react. J'ai configuré le projet avec web pack

Voici mon code pour le composant

import Diamond from '../../assets/linux_logo.jpg';

 export class ItemCols extends Component {
    render(){
        return (
            <div>
                <section className="one-fourth" id="html">
                    <img src={Diamond} />
                </section>
            </div>
        )
    } 
}

Voici la structure de mon projet.

enter image description here

J'ai configuré mon fichier webpack.config.js de la manière suivante

{
    test: /\.(jpg|png|svg)$/,
    loader: 'url-loader',
    options: {
      limit: 25000,
    },
},
{
    test: /\.(jpg|png|svg)$/,
    loader: 'file-loader',
    options: {
      name: '[path][name].[hash].[ext]',
    },
},

PS. Je peux obtenir une image à partir de n'importe quelle autre source distante, mais pas les images enregistrées localement. La console JavaScript ne me donne pas non plus d'erreur. N'hésitez pas à m'aider. Je suis assez novice en matière de réaction et je n'arrive pas à trouver ce que je fais de mal.

20voto

Think-Twice Points 5941

Vous pouvez également utiliser require pour rendre des images telles que

//then in the render function of Jsx insert the mainLogo variable

class NavBar extends Component {
  render() {
    return (
      <nav className="nav" style={nbStyle}>
        <div className="container">
          //right below here
          <img src={require('./logoWhite.png')} style={nbStyle.logo} alt="fireSpot"/>
        </div>
      </nav>
    );
  }
}

13voto

Rohith Murali Points 3168

Si les images se trouvent dans le dossier src/assets, vous pouvez utiliser require avec le chemin correct dans l'instruction require,

var Diamond = require('../../assets/linux_logo.jpg');

 export class ItemCols extends Component {
    render(){
        return (
            <div>
                <section className="one-fourth" id="html">
                    <img src={Diamond} />
                </section>
            </div>
        )
    } 
}

0voto

import React, {Component} from 'react';
import imagename from './imagename.png'; //image is in the current folder where the App.js exits

class App extends React. Component{
    constructor(props){
     super(props)
     this.state={
      imagesrc=imagename // as it is imported
     }
   }

   render(){
       return (

        <ImageClass 
        src={this.state.imagesrc}
        />
       );
   }
}

class ImageClass extends React.Component{
    render(){
        return (

            <img src={this.props.src} height='200px' width='100px' />
        );
    }
}

export default App;

-2voto

Andre Points 1

J'ai résolu le problème en déplaçant le dossier avec l'image dans le dossier src. Puis je me suis tourné vers l'image (projet créé via "create-react-app")
let image = document.createElement("img") ; image.src = require('../assets/police.png') ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X