最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp+vue3實現上傳圖片組件封裝功能

 更新時間:2024年07月21日 11:25:39   作者:全棧^_^小菜鳥  
這篇文章主要介紹了uniapp+vue3實現上傳圖片組件封裝功能,首先創(chuàng)建一個?components 文件在里面進行組件的創(chuàng)建,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

首先創(chuàng)建一個 components 文件在里面進行組件的創(chuàng)建 

下面是 vip組件的封裝 也就是圖片上傳組件 只是我的命名是隨便起的

 
<template>
	<!--圖片 -->
	<view class="up-page">
		<!--圖片-->
		<view class="show-box" v-for="(item,index) in imageList" :key="index">
			<image class="full" :src="item" :data-src="image" @tap="previewImage(item)">
			</image>
			<view class="delect-icon" @tap="delect(index)">
				<image class="full" :src="clearIcon" mode=""></image>
			</view>
		</view>
		<view v-if="VideoOfImagesShow" @tap="chooseVideoImage" class="box-mode">
			<image class="full" :src="selectfile" mode=""></image>
		</view>
	</view>
</template>
<script setup>  
import { ref,onUnmounted } from 'vue';  
// 定義響應式數據  
const clearIcon = ref('../../static/xxx.png');  
const selectfile = ref('../../static/jiahao.png');  
const VideoOfImagesShow = ref(true);  
const imageList = ref([]);  
const videoList = ref([]);  
const sourceType = ref(['拍攝', '相冊', '拍攝或相冊']);  
const sourceTypeIndex = ref(2);  
const cameraList = ref([  
  { value: 'back', name: '后置攝像頭', checked: 'true' },  
  { value: 'front', name: '前置攝像頭' }  
]);  
const cameraIndex = ref(0);  
const maxCount = ref(9);  
// 生命周期鉤子(onMounted, onUnmounted等)  
onUnmounted(() => {  
  imageList.value = [];  
  sourceTypeIndex.value = 2;  
  sourceType.value = ['拍攝', '相冊', '拍攝或相冊'];  
});  
// 方法  
function chooseVideoImage() {  
  uni.showActionSheet({  
    title: '選擇上傳類型',  
    itemList: ['圖片'], // 注意:這里只有'圖片',如果需要視頻應添加'視頻'  
    success: res => {  
      if (res.tapIndex === 0) {  
        chooseImages();  
      }  
      // 注意:原代碼中沒有實現chooseVideo,這里未添加  
    }  
  });  
}  
function chooseImages() {  
  uni.chooseImage({  
    count: maxCount.value,  
    sizeType: ['original', 'compressed'],  
    sourceType: ['album', 'camera'],  
    success: res => {  
      imageList.value = [...imageList.value, ...res.tempFilePaths];  
      if (imageList.value.length + videoList.value.length === maxCount.value) {  
        VideoOfImagesShow.value = false;  
      }  
    }  
  });  
}  
function previewImage(e) {  
  uni.previewImage({  
    // current: e.currentTarget.dataset.url || e, // 假設你通過某種方式傳遞了圖片的URL  
	current:  e, // 假設你通過某種方式傳遞了圖片的URL
    urls: imageList.value  
  });  
}  
// 刪除圖片的函數  
function delect(index) {  
  uni.showModal({  
    title: '提示',  
    content: '是否要刪除該圖片',  
    success: res => {  
      if (res.confirm) {  
        // 使用splice方法刪除圖片,注意需要訪問.value  
        imageList.value.splice(index, 1);  
        if (imageList.value.length+videoList.value.length  == maxCount.value) {
        VideoOfImagesShow.value = false;
        } else {
        	VideoOfImagesShow.value = true;
        }
      }  
    }  
  });  
} 
</script> 
<style lang="scss">
	/* 統(tǒng)一上傳后顯示的盒子寬高比 */
	.box-mode {
		width: 27vw;
		height: 27vw;
		border-radius: 8rpx;
		overflow: hidden;
	}
	.full {
		width: 100%;
		height: 100%;
	}
	.up-page {
		display: flex;
		flex-wrap: wrap;
		display: flex;
		width: 100%;
		.show-box:nth-child(3n){
			margin-right: 0;
		}
		.show-box {
			position: relative;
			margin-bottom:4vw;
			margin-right: 4vw;
			@extend .box-mode;
			.delect-icon {
				height: 40rpx;
				width: 40rpx;
				position: absolute;
				right: 0rpx;
				top: 0rpx;
				z-index: 1000;
			}
		}
	}
</style>

直接在頁面引用

<view class="imgbox">
			<view class="example-body">
				<!-- <uni-file-picker limit="9" title="最多選擇9張圖片"></uni-file-picker> -->
				<div>選擇照片-最多只能選擇九張</div>
				<vip></vip>  //上傳圖片的組件
			</view>
		</view>

最終樣子

到此這篇關于uniapp,vue3上傳圖片組件封裝的文章就介紹到這了,更多相關vue3上傳圖片組件封裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Vue-Router的安裝與使用

    詳解Vue-Router的安裝與使用

    Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構建單頁面應用變得易如反掌。本文介紹下Vue Router的安裝與使用
    2021-06-06
  • elementui[el-table]toggleRowSelection默認多選事件無法選中問題

    elementui[el-table]toggleRowSelection默認多選事件無法選中問題

    這篇文章主要介紹了elementui[el-table]toggleRowSelection默認多選事件無法選中問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue3中實現圖片壓縮的示例代碼

    vue3中實現圖片壓縮的示例代碼

    圖片壓縮是一種比較便捷的壓縮方式,本文主要介紹了vue3中實現圖片壓縮的示例代碼,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • elementUI select組件value值注意事項詳解

    elementUI select組件value值注意事項詳解

    這篇文章主要介紹了elementUI select組件value值注意事項詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 詳解使用webpack打包編寫一個vue-toast插件

    詳解使用webpack打包編寫一個vue-toast插件

    本篇文章主要介紹了詳解使用webpack打包編寫一個vue插件,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • vue如何進行動畫的封裝

    vue如何進行動畫的封裝

    這篇文章主要介紹了vue如何進行動畫的封裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • vue中beforeRouteLeave實現頁面回退不刷新的示例代碼

    vue中beforeRouteLeave實現頁面回退不刷新的示例代碼

    這篇文章主要介紹了vue中beforeRouteLeave實現頁面回退不刷新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vuex中store存儲store.commit和store.dispatch的用法

    vuex中store存儲store.commit和store.dispatch的用法

    這篇文章主要介紹了vuex中store存儲store.commit和store.dispatch的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Nginx部署前端Vue項目的完全流程

    Nginx部署前端Vue項目的完全流程

    在前后端分離架構中,vue項目通常需要部署到nginx服務器以實現生產環(huán)境運行,這篇文章主要介紹了Nginx部署前端Vue項目的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-05-05
  • element-plus 下拉框實現全選的示例代碼

    element-plus 下拉框實現全選的示例代碼

    本文主要介紹了element-plus 下拉框實現全選的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論

合肥市| 三河市| 金寨县| 比如县| 蚌埠市| 得荣县| 莱州市| 霍林郭勒市| 南投县| 桦甸市| 海伦市| 类乌齐县| 饶阳县| 宜君县| 高台县| 吐鲁番市| 上思县| 嘉黎县| 余庆县| 陆川县| 通辽市| 湘西| 称多县| 方正县| 固阳县| 合江县| 昌图县| 临夏县| 会泽县| 陕西省| 丹东市| 招远市| 南江县| 威信县| 西盟| 九台市| 龙游县| 太白县| 什邡市| 昭平县| 抚宁县|