react-native - 变量 "window"在 React Native 中代表什么?

标签 react-native

我正在查看一些用于 react native fetch blob https://github.com/joltup/react-native-fetch-blob 的代码,我在他们的示例中看到调用 window.Blob 等。

Window 是否是一个全局变量,就像您在浏览器 Web 环境中看到的那样?或者它是否以某种方式代表当前的可视屏幕?下面的代码示例只是替换/覆盖全局对象吗?

const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;

最佳答案

React Native 定义了一些全局变量(都在 global 下),它们是 polyfill 的,因此可以使用最初为浏览器开发的某些库而不会失败。大多数熟悉的浏览器 API 的 polyfill 都是空的。您可以在 InitializeCore.js 中看到它们。
window 虽然不是空的。它设置为 global :

if (global.window === undefined) {
  global.window = global;
}

那么下一个问题是, Blob 中的 global 是什么?
Blob 是使用 global 函数的属性 added to polyfillGlobal 。如果您对它的工作原理感到好奇,可以查看 PolyfillFunctions.js 文件。 Blob 本身在 Blob.js 中定义。
polyfillGlobal('Blob', () => require('Blob'));

所以现在我们看到了 React Native 正在做什么,我们可以回到你的问题:
  • Window 是否是一个全局变量,就像您在浏览器 Web 环境中看到的那样?
  • 是的,它是一个全局变量,它是 global 的属性,设置为等于 global
  • 还是以某种方式代表当前的可视屏幕?
  • 不。它代表 React Native 想要它代表的任何东西。
  • 下面的代码示例是否只是替换/覆盖全局对象?
  • 是的。它正在用 react-native-fetch-blob 自己的实现替换 window.XMLHttpRequestwindow.Blob
  • 关于react-native - 变量 "window"在 React Native 中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49911424/

    相关文章:

    ios - defaultNavigationOptions 中的默认背景颜色

    android - 错误 : Failed to find target with hash string 'android-27'

    firebase - React Native - 使用 firebase 进行 Jest 测试

    reactjs - 即使 flex : 1,React Native 文本输入字段也不会全宽

    javascript - 用多个值 react native setState

    react-native - react native : FlatList is not showing

    css - 在 React Native 中创建背景

    react-native - 使用 react-native-testing-library 在 Jest 中未呈现 NativeBase 内容

    android - 如何在 native react 中将文本设置在中心

    javascript - react native 后退按钮缺少图标