###質問概要
jsxのimgタグのsrc属性に関する質問です。
今、ディレクトリの構造が下記のようになっているとします。
root/
├ images/
│ └ sample.png
├ public/
│ ├ bundle.js
│ └ index.html
├ src/
│ ├ components/
│ │ └ Header.jsx
│ └ index.jsx
├ package.json
└ webpack.config.js
Header.jsx
の<img>
のsrc属性値としてimages/sample.png
を読み込ませようと思い、方法①と方法②を試しました。
###方法①
方法①ではHeader.jsx
を下記のようにしました。
jsx
1import React from 'react'; 2 3const Header = () => ( 4 <div className="header"> 5 <div className="header-left"> 6 <div> 7 <img 8 src="../images/sample.png" 9 alt="" 10 /> 11 </div> 12 </div> 13 </div> 14); 15 16export default Header; 17
しかし、画像は表示されず、コンソールにはnot found
と表示されてしまいます。
(ちなみに、webpackによってトランスパイルされpublic/bundle.js
として出力されます。)
###方法②
そこで、方法②ではurl-loader
をインストールし、webpack.config.js
に下記を追加し、Header.jsx
も以下のように書き換えました。
js
1{ 2 test: /.png$/, 3 loader: 'url-loader?mimetype=image/png', 4}
jsx
1import React from 'react'; 2 3import imgUrl from '../../images/sample.png'; 4 5const Header = () => ( 6 <div className="header"> 7 <div className="header-left"> 8 <div> 9 <img 10 src={imgUrl} 11 alt="" 12 /> 13 </div> 14 </div> 15 </div> 16); 17 18export default Header; 19
上記のようにすると、うまく画像が表示されます。
###質問まとめ
方法①で画像が表示されない原因は何なのでしょうか?
(できるだけ方法①を採用したいと考えています。)
何かご回答をいただけると非常に助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/27 00:20