javascript - 常量 i = 新图像();不适用于 react-native iOS 和 Android
问题描述
我在 react-native 中遇到以下错误:
[Unhandled promise rejection: ReferenceError: Can't find variable: Image]
* src/utils/b64ToBlob.js:45:56 in Promise$argument_0
这是它失败的功能b64ToBlog.js
:
export const getImageDimensions = (file) => new Promise((resolved) => {
const i = new Image();
i.onload = () => resolved(i);
i.src = file;
});
在iOS
和Android
上,它都失败了const i = new Image();
:
如何Image
从 URL 提供或获取图像尺寸,或者如何Image
在 react-native 中提供?
编辑
对于那些感兴趣的人,这是我的最终解决方案:
import { Platform, Image as ImageNative } from 'react-native';
export const getImageDimensions = (file) => new Promise((resolved) => {
if (Platform.OS === 'web') {
const i = new Image();
i.onload = () => resolved(i);
i.src = file;
return i;
} else {
return getSizeNative(file).then(resolved);
}
});
function getSizeNative(uri) {
return new Promise((resolve, reject) => {
ImageNative.getSize(uri, (width, height) => resolve({ width, height }), reject)
})
}
解决方案
您显示的代码用于 DOMImage
构造函数,而不是 React Native 的Image
组件。
查看它的 API,看起来 React Native 的Image
组件提供了一个getSize
静态方法:
import { Image } from "react-native";
export const getImageDimensions = (file) => new Promise((resolved, reject) => {
Image.getSize(
file,
(width, height) => resolve({width, height}),
reject
);
});
遗憾的是,文档似乎没有说明如何将大小报告给成功函数,因此您可能需要更深入地挖掘或尝试一下,看看会得到什么。...但是从随后发布在问题中的代码来看,它看起来像是将它们作为离散参数接收,所以我已经更新了上面的内容。
推荐阅读
- java - JDBC 源连接器和接收器连接器是否需要 Confluent?
- javascript - 在选项卡之间跳转 - react-native 导航
- php - apache2 和 docker 的 Laravel Websockets 问题
- android - 使用 PhoneAuthProvider 验证电话后如何使用电子邮件和密码方法创建帐户?
- jpa - (A) 使用 CompletableFutures 调用 Spring jpa 的同步行为
- java - 如何直接从休眠中的查询中通过“setResultTransformer”和“addScalar”构建我的对象?
- angular - 预期 spy myMethod 已被调用:但它从未被调用
- php - 在 ubuntu 中为 PHP 页面保存一个 Favicon
- android - 如何在 React Native Expo Android 深度链接中进行测试
- java - 在安装了 OpenJDK 11 的情况下启动 OWASP ZAP 时出现问题