使用 Axios 取得 API
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const { onMounted } = Vue; const app = { setup() { onMounted(() => { axios .get("https://vue-lessons-api.herokuapp.com/photo/list") .then((res) => { console.log(res.data); }); }); return {}; }, };
|
Axios 渲染資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <div class="box"> <div> <img v-for="(item, i) in imgArray.arr" :key="item.url" v-show="ImgIdx === i" class="img" :src="item.url" /> </div> <div class="btnbox"> <a href="javascript:;" @click="ImgIdxRemove">上一張</a> <a href="javascript:;" @click="ImgIdxAdd">下一張</a> </div> </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| const { onMounted, reactive, ref } = Vue; const app = { setup() { const imgArray = reactive({ arr: [] }); const ImgIdx = ref(0); const ImgIdxAdd = () => { ImgIdx.value++; if (ImgIdx.value > imgArray.arr.length - 1) { ImgIdx.value = 0; } }; const ImgIdxRemove = () => { ImgIdx.value--; if (ImgIdx.value < 0) { ImgIdx.value = imgArray.arr.length - 1; } }; onMounted(() => { axios .get("https://vue-lessons-api.herokuapp.com/photo/list") .then((res) => { imgArray.arr = res.data; }); }); return { imgArray, ImgIdx, ImgIdxAdd, ImgIdxRemove }; }, };
|
加入 loading 效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <div class="box" v-if="isLoad"> <div> <img v-for="(item, i) in imgArray.arr" :key="item.url" v-show="ImgIdx === i" class="img" :src="item.url" /> </div> <div class="btnbox" v-if="isLoad"> <a href="javascript:;" @click="ImgIdxRemove">上一張</a> <a href="javascript:;" @click="ImgIdxAdd">下一張</a> </div> </div> <img v-if="!isLoad" class="load" src="./images/load.gif" alt="" />
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| const imgArray = reactive({ arr: [] }); const ImgIdx = ref(0); const isLoad = ref(false); const ImgIdxAdd = () => { ImgIdx.value++; if (ImgIdx.value > imgArray.arr.length - 1) { ImgIdx.value = 0; } }; const ImgIdxRemove = () => { ImgIdx.value--; if (ImgIdx.value < 0) { ImgIdx.value = imgArray.arr.length - 1; } };
const handImgLoad = (imgArr) => { let i = 0; imgArr.forEach((image) => { const newImage = new Image(); newImage.src = image.url; newImage.onload = () => { i++; if (imgArr.length === i) { imgArray.arr = imgArr; isLoad.value = true; } }; }); };
onMounted(() => { axios.get("https://vue-lessons-api.herokuapp.com/photo/list").then((res) => { handImgLoad(res.data); }); }); return { imgArray, ImgIdx, isLoad, ImgIdxAdd, ImgIdxRemove };
|
以上是我的學習筆記,希望也有幫助到你哦 😀
🚀實體工作坊分享
最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!
🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程
想學習更多關於前後端的線上課程,可以參考看看。
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住
如果你是初學者,非常推薦六角學院哦!
剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!
也是很多工程師推薦的線上課程網站。