在一个前端用户反馈表单中,用户可以上传图片来描述问题(最多可以上传5张),用户可能第一次点击了一张,第二次需要继续添加(要求再次打开图片选择器可以自动选择第一次已经选择的,我们使用preselectedUris属性。
问题
preselectedUris属性中的string数组不可以使用@State修饰,只能是普通变量才能生效。
代码复现
import picker from '@ohos.file.picker';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
@Entry
@Component
struct WebComponent {
photoUris: Array<string> = []; // 成功
// @State photoUris: Array<string> = []; // 失败
build() {
Column() {
}
.width('100%').height('100%')
.backgroundColor(Color.Pink)
.onClick(() => {
this.example01()
})
}
example01() {
try {
let photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.preselectedUris = this.photoUris;
photoSelectOptions.maxSelectNumber = 5;
const photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select(photoSelectOptions).then((selectResult: photoAccessHelper.PhotoSelectResult) => {
this.photoUris = selectResult.photoUris
}).catch((err: Object) => {
console.error('photoViewPicker.select failed with err: ' + JSON.stringify(err));
});
} catch (error) {
console.error('photoViewPicker failed with err: ' + JSON.stringify(error));
}
}
}
对preselectedUris进行赋值的变量无需使用@State修饰,如果一定要用@State修饰可以copy一份该变量赋值给preselectedUris