次のような画像を表示すると機能します。
<Thumbnail source= {require('../images/01.jpg')} />
しかし失敗する:
<Thumbnail source= {require('../images/'+ {person.id} +'.jpg')} />
person.id
はpeople
の配列から取得されます。 <Text>{person.id}</Text>
で印刷すると、出力は01
または02
になります。
名前をprop.valueとしてローカル画像を表示するにはどうすればよいですか?
私は試した:
<Thumbnail source= {require(`../images/${person.id}.jpg`)} />
そして
<Thumbnail source= {require('../images/'+ person.id +'.jpg')} />
あなたが達成しようとしていることは実際には不可能です。
パッケージ化は1回行われます実行前したがって、変数person.id
まだ価値がありません。
これはすでに議論されています ここ 。
ディスカッションでは、この問題の解決策を見ることができます。
基本的には可能なすべてのファイルをインポートする使用する必要があります。
簡単なアプローチ:
var firstImage = require('../images/01.jpg');
var secondImage = require('../images/02.jpg');
var myComponent = (whichImageToUse) ? firstComponent : secondComponent;
洗練されたアプローチ:すべての画像を必要とするファイルを作成します。
allImages.js
export default {
'01': require('../images/01.jpg'),
'02': require('../images/02.jpg'),
// import all other images
}
画像を使用する必要がある場所にそのファイルをインポートし、次のように個々の画像にアクセスします。
import images from '../images/allImages'
<Thumbnail source={images[person.id]} />
Person.idから中括弧を削除すると機能します。
<Thumbnail source= {require('../images/'+ {person.id} +'.jpg')} />
このような:
<Thumbnail source= {require('../images/'+ person.id +'.jpg')} />
またはこれ(es6テンプレートリテラルを使用):
<Thumbnail source= {require(`../images/${person.id}.jpg`)} />