J'ai un problème avec mes images sur mon projet react. En effet, j'ai toujours pensé que le chemin relatif dans l'attribut src était construit sur l'architecture des fichiers
Voici mon architecture de fichiers:
components
file1.jsx
file2.jsx
file3.jsx
container
img
js
...
Cependant, j'ai réalisé que le chemin est construit sur l'url. Dans l'un de mes composants (par exemple dans file1.jsx), j'ai ceci:
localhost/details/2
<img src="../img/myImage.png" /> -> works
localhost/details/2/id
<img src="../img/myImage.png" /> -> doesn't work, images are not displayed
Comment résoudre ce problème? Je veux que dans toute forme de routes gérées par react-router, toutes les images puissent être affichées avec le même chemin.
javascript
reactjs
webpack
onedkr
la source
la source
require
. Lisez cette réponse sur SO pour plus d'informations.Réponses:
Vous utilisez une URL relative, qui est relative à l'url actuelle, pas au système de fichiers. Vous pouvez résoudre ce problème en utilisant des URL absolues
<img src ="http://localhost:3000/details/img/myImage.png" />
Mais ce n'est pas génial lorsque vous déployez sur www.my-domain.bike ou sur tout autre site. Mieux vaut utiliser une url relative au répertoire racine du site
<img src="/details/img/myImage.png" />
la source
/
qui précèdedetails
(vs./details
, etc., pour d'autres qui peuvent confondre les deux).reactjs
aveccordova
et en utilisantES5
comme eslint/images/popcorn.png
pas le cas./images/popcorn.png
. A travaillé pour moi avec tous les itinéraires et tout.Dans
create-react-app
les chemins relatifs pour les images ne semblent pas fonctionner. Au lieu de cela, vous pouvez importer une image:la source
import './styles/style.less'; **import logo from './styles/images/deadline.png';**
J'obtiens une erreur sur le module de 2ème ligne non trouvé alors que l'image existe et que le chemin est correct.Si vous avez utilisé create-react-app pour créer votre projet, votre dossier public est accessible. Vous devez donc ajouter votre
image
dossier dans le dossier public.<img src="/images/logo.png" />
la source
www.example.com/react-app
, le dossier public sera exposé sur www.example.com, sansreact-app
. Cela peut être gênant, donc la réponse acceptée est la bonne. Sources: ajout d'actifs et utilisation du dossier publicAvec
create-react-app
il y a un dossier public (avec index.html ...). Si vous placez votre "myImage.png" là, disons sous le sous-dossier img , alors vous pouvez y accéder via:la source
Créez un dossier images dans src (/ src / images) et gardez votre image dedans. Importez ensuite cette image dans votre composant (utilisez votre chemin relatif). Comme ci-dessous-
import imageSrc from './images/image-name.jpg';
Et puis dans votre composant.
<img title="my-img" src={imageSrc} alt="my-img" />
Une autre méthode consiste à conserver les images dans un dossier public et à les importer en utilisant un chemin relatif. Pour cela, créez un dossier d'images dans un dossier public et conservez-y votre image. Et puis dans votre composant, utilisez-le comme ci-dessous.
<img title="my-img" src='/images/my-image.jpg' alt="my-img" />
Les deux méthodes fonctionnent, mais la première est recommandée car sa manière plus propre et les images sont gérées par webpack pendant la construction.
la source
dans mon cas, le code suivant fonctionne aussi.
la source
Certaines réponses plus anciennes ne fonctionnent pas, d'autres sont bonnes mais n'expliquent pas le thème, en résumé:
Si l'image est dans le répertoire 'public'
Exemple:
\public\charts\a.png
En html:
En JavaScript:
Créer une image vers une nouvelle img, dynamiquement:
Définissez l'image sur img existante avec l'ID comme 'img1', de manière dynamique:
Si l'image est dans le répertoire 'src':
Exemple:
\src\logo.svg
En JavaScript:
Dans jsx:
la source
Ajout du chargeur de fichiers npm à webpack.config.js selon ses instructions d'utilisation officielles comme ceci:
travaillé pour moi.
la source
Importez des images dans votre composant
Et appelez le nom de l'image sur l'image src = {RecentProjectImage_3} en tant qu'objet
la source
Un ami m'a montré comment procéder comme suit:
"./" fonctionne lorsque le fichier demandant l'image (par exemple, "example.js") est au même niveau dans l'arborescence des dossiers que le dossier "images".
la source
Placez le logo dans votre dossier public sous par exemple public / img / logo.png, puis reportez-vous au dossier public en tant que% PUBLIC_URL%:
L'utilisation de% PUBLIC_URL% dans ce qui précède sera remplacée par l'URL du
public
dossier lors de la construction. Seuls les fichiers à l'intérieur dupublic
dossier peuvent être référencés à partir du HTML.Contrairement à "/img/logo.png" ou "logo.png", "% PUBLIC_URL% / img / logo.png" fonctionnera correctement à la fois avec le routage côté client et une URL publique non root. Découvrez comment configurer une URL publique non root en exécutant
npm run build
.la source