Saya memiliki beberapa masalah dengan gambar saya di proyek reaksi saya. Memang saya selalu berpikir bahwa path relatif ke atribut src dibangun pada arsitektur file
Di sini arsitektur file saya:
components
file1.jsx
file2.jsx
file3.jsx
container
img
js
...
Namun saya menyadari bahwa path dibangun di atas url. Di salah satu komponen saya (misalnya ke file1.jsx) saya punya ini:
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
Bagaimana mungkin untuk menyelesaikan masalah ini? Saya ingin bahwa dalam segala bentuk rute yang ditangani oleh react-router, semua gambar dapat ditampilkan dengan jalur yang sama.
javascript
reactjs
webpack
onedkr
sumber
sumber
require
. Baca jawaban ini di SO untuk info lebih lanjut.Jawaban:
Anda menggunakan url relatif, yang relatif terhadap url saat ini, bukan sistem file. Anda dapat menyelesaikan ini dengan menggunakan url absolut
<img src ="http://localhost:3000/details/img/myImage.png" />
Tapi itu tidak bagus untuk ketika Anda menyebarkan ke www.my-domain.bike, atau situs lain. Lebih baik menggunakan url relatif terhadap direktori root situs
<img src="/details/img/myImage.png" />
sumber
/
yang mendahuluidetails
(vs./details
, dll, untuk orang lain yang mungkin mengacaukan keduanya).reactjs
dengancordova
dan menggunakanES5
sebagai eslint/images/popcorn.png
dan tidak./images/popcorn.png
. Bekerja untuk saya dengan semua rute dan barang-barang.Di
create-react-app
jalur relatif untuk gambar tampaknya tidak berfungsi. Sebagai gantinya, Anda dapat mengimpor gambar:sumber
import './styles/style.less'; **import logo from './styles/images/deadline.png';**
Saya mendapatkan kesalahan pada modul baris ke-2 tidak ditemukan saat gambar ada & path sudah benar.Jika Anda menggunakan buat-reaksi-aplikasi untuk membuat proyek Anda maka folder publik Anda dapat diakses. Jadi, Anda perlu menambahkan
image
folder Anda di dalam folder publik.<img src="/images/logo.png" />
sumber
www.example.com/react-app
, folder publik akan terbuka di www.example.com, tanpareact-app
. Ini bisa merepotkan, jadi jawaban yang diterima adalah yang benar. Sumber: menambah aset dan menggunakan folder publikDengan
create-react-app
ada folder publik (dengan index.html ...). Jika Anda menempatkan "myImage.png" di sana, katakan di bawah sub-folder img , maka Anda dapat mengaksesnya melalui:sumber
Buat folder gambar di dalam src (/ src / images) dan simpan gambar Anda di dalamnya. Kemudian impor gambar ini di komponen Anda (gunakan jalur relatif Anda). Seperti di bawah ini-
import imageSrc from './images/image-name.jpg';
Dan kemudian di komponen Anda.
<img title="my-img" src={imageSrc} alt="my-img" />
Cara lain adalah menyimpan gambar di folder publik dan mengimpornya menggunakan jalur relatif. Untuk ini, buat folder gambar di folder publik dan simpan gambar Anda di dalamnya. Dan kemudian di komponen Anda gunakan seperti di bawah ini.
<img title="my-img" src='/images/my-image.jpg' alt="my-img" />
Kedua metode ini berfungsi tetapi yang pertama direkomendasikan karena cara yang lebih bersih dan gambar ditangani oleh webpack selama waktu pembuatan.
sumber
dalam kasus saya kode berikut juga berfungsi.
sumber
Beberapa jawaban yang lebih tua tidak berfungsi, yang lain baik tetapi tidak akan menjelaskan tema, secara ringkas:
Jika gambar ada di direktori 'publik'
Contoh:
\public\charts\a.png
Dalam html:
Dalam JavaScript:
Buat gambar ke img baru, secara dinamis:
Setel gambar ke img yang ada dengan id sebagai 'img1', secara dinamis:
Jika gambar ada di direktori 'src':
Contoh:
\src\logo.svg
Dalam JavaScript:
Dalam JSX:
sumber
Menambahkan file-loader npm ke webpack.config.js per instruksi penggunaan resminya seperti:
bekerja untukku.
sumber
Impor Gambar di komponen Anda
Dan panggil nama gambar pada gambar src = {RecentProjectImage_3} sebagai objek
sumber
Seorang teman menunjukkan kepada saya bagaimana melakukan ini sebagai berikut:
"./" berfungsi ketika file yang meminta gambar (misalnya, "example.js") berada pada level yang sama dalam struktur struktur folder dengan folder "gambar".
sumber
Tempatkan logo di folder publik Anda di bawah mis. Publik / img / logo.png dan kemudian merujuk ke folder publik sebagai% PUBLIC_URL%:
Penggunaan% PUBLIC_URL% di atas akan diganti dengan URL
public
folder selama pembuatan. Hanya file di dalampublic
folder yang dapat dirujuk dari HTML.Tidak seperti "/img/logo.png" atau "logo.png", "% PUBLIC_URL% / img / logo.png" akan berfungsi dengan benar baik dengan perutean sisi klien dan URL publik non-root. Pelajari cara mengonfigurasi URL publik non-root dengan menjalankan
npm run build
.sumber