前提・実現したいこと
vue.jsで猫と犬の画像を4枚ずつ表示させるため設定を行っています。
・this.photosを上書きしてしまって片方だけ表示しています。
現在の状態
質問内容
下記のコードにスプレッド構文やforEach()を使って犬と猫の画像を両方表示させるにはどのような設定をすればよいのかアドバイスお願いします。
this.photos = data.photos.photo.map(photo => ({
コード
index.html
1 2<div class="image-gallery__item" 3 v-for="photo in photos" 4 > 5 <a 6 v-bind:key="photo.id" 7 v-bind:href="photo.pageURL" 8 tooltip="photo" 9 class="d-inline-block" 10 target="_blank" 11 > 12 <img 13 v-bind:src="photo.imageURL" 14 v-bind:alt="photo" 15 width="150" 16 height="150" 17 > 18 </a> 19 </div>
main.js
1new Vue({ 2 el: '#gallery', // elオプションの値に '#gallery' を設定 3 4 components: { 5 6 }, 7 8 9 data: { 10 // 利用するデータを設定 11 12 photos:[], 13 14 }, 15 16 17 18 created() { 19 // Vueが読み込まれたときに実行する処理を定義 20 this.fetchImagesFromFlickr('cat'); 21 this.fetchImagesFromFlickr('dog'); 22 }, 23 24 25 26 27 28 methods: { 29 fetchImagesFromFlickr(searchText) { 30 31 const url = getRequestURL(searchText); 32 33 34 35 36 $.getJSON(url, (data) => { 37 if (data.stat !== 'ok') { 38 //this.photos(); 39 return; 40 } 41 42 43 44 45 46 if (fetchedPhotos.length === 0) { 47 return; 48 } 49 50 51 52 53 const imageData = fetchedPhotos.map(photo => ({ 54 id: photo.id, 55 imageURL: getFlickrImageURL(photo, 'q'), 56 pageURL: getFlickrPageURL(photo), 57 text: getFlickrText(photo), 58 })); 59 }); 60 }, 61 }, 62 }); 63
『concatを使って』と繰り返していますが、これは配列のconcatメソッドを使うという意味なのでしょうか?
concatを使うことが目的なのですか?犬と猫の画像両方表示させることができればいいのですよね?
上記の点について明記をお願いします。
説明不足申し訳ございません。
・配列のconcatメソッドを使うという意味です。
・concatを使うことが目的です。
3-7. markdownを利用しましょう
https://teratail.com/help/question-tips#questionTips3-7
上記のコメントにconcatを使うと書きましたが、他に何か方法があればアドバイスお願いします。
concatは使わずに修正しようと思います。
回答2件
あなたの回答
tips
プレビュー