Récemment, lorsque je développais un petit programme utilisant uniapp, j'ai rencontré un problème, c'est-à-dire que lors du parcours d'images, les images ne pouvaient pas s'afficher normalement. Après quelques explorations et recherches, j'ai finalement trouvé une solution et je la partage avec vous maintenant.
1. Description du problème
Dans le petit programme que j'ai développé, je dois parcourir toutes les images d'un dossier et les afficher sur la page. Tout d'abord, j'ai utilisé le composant natif d'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>
Ce code sélectionne simplement les images de l'album en appelant la méthode uni.chooseImage()
, puis placez le chemin de l'image sélectionné dans un tableau, puis affichez chaque image via la commande 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>
fourni par uniapp pour prévisualiser l'image, et j'ai constaté que l'image rendue pouvait être affichée normalement. 🎜🎜Jusqu'à présent, je n'ai toujours pas trouvé la source du problème, mais je suis convaincu qu'il s'agit d'un problème avec la balise 🎜🎜Grâce à cette explication, je comprends que c'est parce que la baliseuni-app
Le composant natif image est basé surHTML
lors de l'utilisation de conteneursweb
(y comprisH5
,App code>) Implémenté par le composant <code>img
. L'attributsrc
de la baliseimage
ne peut pas être directement adapté au chemin local et nécessite un traitement particulier : 🎜
HBuilderX
Développement Page Outils , définissez le mode de démarrage de l'Application
surPersonnalisé
ouDébogage personnalisé
, Fonction-> Exécuter-> Define (debug)`, puis tout comme le navigateur, les chemins locaux et les chemins réseau peuvent être utilisés.- Lors du débogage sur une machine réelle, définissez
app-plus
dansmanifest.json
->webview
esttrue
. De cette façon, lors du débogage sur une machine réelle, vous pouvez également utiliser directement le chemin d'accès local.
img
dans HTML
, l'utilisation directe des chemins locaux n'est pas prise en charge dans uniapp
et un traitement spécial est requis. 🎜🎜J'ai donc utilisé la page de l'outil de développement HBuilderX
pour définir le mode de démarrage de l'App
sur personnalisé (débogage), et maintenant les images peuvent être affichées normalement. 🎜<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!