質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1301閲覧

ReactNativeで画像のURLをComponentに渡して表示させたいです

shuhei-o

総合スコア2

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/10/30 07:49

編集2021/11/01 03:38

前提・実現したいこと

ReactNativeで画像のURLをComponentに渡して<Image>で画像を表示させたいです。

発生している問題・エラーメッセージ

urlの値を渡しても表示されません。

Error: Cannot find module '[object Object]' webpackEmptyContext /srv/frontend/app/Lottery/components/common sync:2 TicketListComponent /srv/frontend/app/Lottery/components/common/ticketList.js:13 10 | width:100, 11 | height:50, 12 | }} > 13 | source={require({url})}/> | ^ 14 | <Text>{title}{data}</Text> 15 | </View> 16 | )

該当のソースコード

Javascript

1<TicketListComponent 2 data={data.bronze_ticket} 3 title="Bronze Ticket" 4 url="../../assets/images/bronze-ticket.png" />

Javascript

1import React from 'react' 2import {View,Image,Text} from 'react-native' 3 4const TicketListComponent = ({data, title, url})=>{ 5 6 return ( 7 <View style={{width:'100%',alignItems:'center',backgroundColor:'#fff',}}> 8 <Image 9 style={{ 10 width:100, 11 height:50, 12 }} 13 source={require({url})}/> 14 <Text>{title}{data}</Text> 15 </View> 16 ) 17} 18export default TicketListComponent;

###試したこと1.{url}の{}を外してみました。

return ( <View style={{width:'100%',alignItems:'center',backgroundColor:'#fff',}}> <Image style={{ width:100, height:50, }} source={require(url)}/> <Text>{title}{data}</Text> </View> )

以下のエラーに変わりました。

Error: Cannot find module '../../assets/images/bronze-ticket.png' webpackEmptyContext /srv/frontend/app/Lottery/components/common sync:2 TicketListComponent /srv/frontend/app/Lottery/components/common/ticketList.js:13

###試したこと2.requireをuriに変更しました

return ( <View style={{width:'100%',alignItems:'center',backgroundColor:'#fff',}}> <Image style={{ width:100, height:50, }} source={{uri:url}}/> <Text>{title}{data}</Text> </View> )

結果はエラーは起きませんでしたが、画像は表示されませんでした。

ご回答いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

React Nativeは触ったことがないのでもしかしたら違うかもしれないですが、

Error: Cannot find module '../../assets/images/bronze-ticket.png'

これは多分../../assets/images/bronze-ticket.pngが読み込めなかったことを表しているのだと思います。まず、確認ですが、指定したパスにちゃんと画像ファイルはありますか?確認してみてください。
※**「該当のソースコードがあるディレクトリ」**から見て../../assets/images/bronze-ticket.pngです。案外..が多いとか、少ないとかという可能性もあるのでしっかり確認してみてください。

その他、こちらのqiitaの記事で、React Nativeで画像をrequireする時は注意が必要らしいというのもあったので参考にしてみてください。

ちなみに、requireはおそらくCommonJSのrequireのことだと思うので、引数はstringです(link)。最初のrequire({url})は、オブジェクトが引数に渡されているので、多分これがstringキャストされた[object Object]でモジュール(画像)を探しに行こうとしたのだと思います。だから最初の書き方は間違いですね。

すみません。完全なる答えになるかは分かりませんがこれで確認してみてもらえますか?

投稿2021/11/09 16:36

ukyoda

総合スコア386

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shuhei-o

2021/12/06 08:07

React Nativeで画像をrequireする時は注意が必要らしいというのもあったので参考にしてみてください。 →まさにその通りで、component内で条件分岐で画像までのpathを指定するようにしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問