z***@163.com
z***@163.com
  • 发布:2024-08-19 14:00
  • 更新:2024-09-29 17:18
  • 阅读:96

在uni.chooseImage的success回调里面无法更新响应式数据也无法使用setTimeout

分类:uni-app x

uni-app x项目,开发ISO App.
avatar是响应式变量,即:ref变量,用于给<image>显示图片,我的目的是用uni.chooseImage选择图片后显示在<image>里,后续再上传,不是选择好图片就直接上传。
模板:
<template>
<view class="avatar-box">
<text style="margin-top: 8px;">头像</text>
<image class="avatar-img" :src="avatar" mode="aspectFit" ></image>
</view>
</template>
JavaScript:
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
crop: {
width: 200,
height: 200
},
success: (res) => {
console.log("Array.isArray(res.tempFilePaths)=" + Array.isArray(res.tempFilePaths));
let filepath = res.tempFilePaths[0];
//avatar.value = filepath; //如果uni.chooseImage没crop参数是可以用这行的,avatar值能被更改,图片也会显示出来,但是我需要crop参数,用这行不但无效而且还会导致后面用uni.showModal()里面的回调也失败。
//因为无法直接更改avatar的值,所以想用setTimeout 延时更改avatar值,但结果是无法执行setTimeout里面的function,也就无法更改avatar的值
setTimeout(() => {
//这里的任何代码都无法被执行
console.log("[setTimeout]");
avatar.value = filepath;
}, 200);
//因为无法使用setTimeout()所以用uni.showModal的回调测试一下,结果avatar值居然可以被更改,所以图片也就显示出来了
uni.showModal({
title: "title",
content: "content",
showCancel: false,
success: (res) => {
avatar.value = filepath;
}
});
}
});

总结一下问题:
使用uni.chooseImage选择相册里面的图片时,要使用crop参数,就无法在success回调中更改响应式变量avatar的值,也就无法显示图片,请问这是怎么回事?用uni.showModal()的回调来显示图片不是我想要的,我想要的是用户选择照片后就给显示出来,后续再进行上传,至于上传已经测试通过了,crop参数是有效果的,现在问题是图片选择后没法显示出来。

2024-08-19 14:00 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com

一样的问题,安卓上能正常运行,iOS不行,模拟器和真机我都试了。
但看到你帖子用 uni.showModal 可以设置。受教。但这效果肯定不行。
这官方bug。请解决下。

要回复问题请先登录注册