최근 uniapp을 사용하여 작은 프로그램을 개발할 때 문제가 발생했습니다. 즉, 사진을 탐색할 때 사진이 정상적으로 표시되지 않는 것입니다. 몇 가지 탐구와 연구 끝에 마침내 해결책을 찾았고, 이제 그 해결책을 여러분과 공유하게 되었습니다.
1. 문제 설명
내가 개발한 작은 프로그램에서는 폴더에 있는 모든 사진을 탐색하여 페이지에 표시해야 합니다. 먼저 uniapp의 기본 구성 요소인
<template> <view> <image v-for="(item, index) in imageList" :src="item.path" :key="index"></image> </view> </template> <script> export default { data() { return { imageList: [] // 图片列表 } }, methods: { async getImageList() { const { tempFilePaths } = await uni.chooseImage({ // 从相册中选择图片 count: 9, sizeType: ['original', 'compressed'], sourceType: ['album'], }) for (let i = 0; i < tempFilePaths.length; i++) { this.imageList.push({ path: tempFilePaths[i], }) } } }, mounted() { this.getImageList() } } </script>
이 코드는 단순히 uni.chooseImage()
메서드를 호출하여 앨범에서 사진을 선택합니다. 그런 다음 선택한 이미지 경로를 배열에 넣은 다음 v-for
명령을 통해 각 이미지를 표시합니다. uni.chooseImage()
方法从相册中选择图片,然后将选中的图片路径放到一个数组中,再通过v-for
指令将每张图片展示出来。
可是当我运行程序时,页面上并没有显示任何图片,于是我就开始了漫长的排查之旅。
二、排查问题
1.图片路径是否正确?
首先我就想到了图片路径的问题,我使用了uniapp的调试工具进行了检查,发现路径并没有问题,而且在调试工具的预览区域中图片是可以正常显示的。
2.图片是否正确加载?
第二个问题是图片是否正确加载,因为我使用的是本地图片,所以我试图将图片上传到了服务器上,发现图片在服务器上可以正常显示,但在本地依旧无法显示。
3.与其他组件是否冲突?
我怀疑是因为我在页面中使用了其他组件与
4.使用uniapp提供的图片浏览组件是否能正常显示?
最后我想到了使用uniapp提供的图片浏览组件<uni-image-preview>
来预览图片,结果发现渲染出来的图片是可以正常显示的。
到这里为止,我还是没有找到问题的根源,但也确信了这是
三、解决方案
这时我重新阅读了uniapp官方文档关于使用
uni-app
原生组件image
在使用web
容器(包括H5
、App
)的时候是基于HTML
img
组件实现的。image
标签的src
属性,无法直接适配本地路劲,需要特殊处理:
HBuilderX
开发工具页面,将App
启动模式设置为自定义
或自定义调试
,功能 -> 运行 -> App启动模式 -> 自定义(debug)` ,然后就和浏览器一样,本地路径、网络路径均可使用。- 真机调试时,在
manifest.json
中设置app-plus
->debug
->webview
为true
。这样在真机上调试时,也可以直接使用本地路径访问。
通过这段说明,我明白了原来是因为HTML
中的img
组件,在uniapp
中不支持直接使用本地路径,而需要进行特殊处理。
于是我采用HBuilderX
开发工具页面将App
<uni-image-preview>
를 이용해서 생각해봤는데, 렌더링된 이미지가 정상적으로 표시될 수 있다는 것을 발견했습니다. 🎜🎜지금까지도 문제의 원인을 찾지 못했지만 🎜🎜이 설명을 통해uni-app
웹
컨테이너(H5
,App
포함)를 사용할 때 기본 구성 요소이미지
는HTML
를 기반으로 합니다. code>)img
구성요소에 의해 구현됩니다.image
태그의src
속성은 로컬 경로에 직접 적용할 수 없으며 특별한 처리가 필요합니다. 🎜
HBuilderX
개발 도구 페이지에서앱
시작 모드를사용자 정의
또는사용자 정의 디버깅
으로 설정하고, 기능-> 정의(디버그)`를 선택하면 브라우저와 마찬가지로 로컬 경로와 네트워크 경로를 모두 사용할 수 있습니다.- 실제 머신에서 디버깅하는 경우
manifest.json
에서app-plus
를 설정하세요. -> webview는true
입니다. 이런 방식으로 실제 머신에서 디버깅할 때 로컬 경로를 직접 사용하여 액세스할 수도 있습니다.
HTML
의 img
구성 요소를 사용하기 때문에 uniapp
에서는 로컬 경로의 직접 사용이 지원되지 않으며 특별한 처리가 필요합니다. 🎜🎜그래서 HBuilderX
개발 도구 페이지를 이용하여 App
시작 모드를 사용자 정의(디버그)로 설정했더니 이제 이미지가 정상적으로 표시됩니다. 🎜<template> <view> <image v-for="(item, index) in imageList" :src="'/' + item.path" :key="index"></image> </view> </template> <script> export default { data() { return { imageList: [] // 图片列表 } }, methods: { async getImageList() { const { tempFilePaths } = await uni.chooseImage({ // 从相册中选择图片 count: 9, sizeType: ['original', 'compressed'], sourceType: ['album'], }) for (let i = 0; i < tempFilePaths.length; i++) { this.imageList.push({ path: tempFilePaths[i], }) } } }, mounted() { this.getImageList() } } </script>🎜마지막으로,
위 내용은 uniapp이 사진을 탐색했지만 나오지 않는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!