TypeError: null is not an object (evaluating 'NativeClipboard_1.default.getString')

TypeError: null is not an object (evaluating 'NativeClipboard_1.default.getString')

我想在我的 expo 项目中使用 @twotalltotems/react-native-otp-input。我已经完成了 @twotalltotems/react-native-otp-input 的文档,但是我收到了这个错误。我试过 https://github.com/tttstudios/react-native-otp-input/issues/87

的解决方案

但是 none 对我有用!

试试这个

1: 安装 yarn add @twotalltotems/react-native-otp-input@1.3.7

2: 安装 yarn add @react-native-community/clipboard

3: 运行 expo start -c 清除缓存

根据文档,您必须安装 @react-native-community/clipboard 作为依赖项,它可以解决您的问题 npm install --save @react-native-community/clipboard

对于将此包 @twotalltotems/react-native-otp-inputexpo 一起使用的人,请记住 expo 与剪贴板包不兼容,但它本身提供了另一个包 expo-clipboard。所以你有两种方法 -

  1. 要么使用 @twotalltotems/react-native-otp-input 版本 1.3.7(它使用 react-native 中的 clipboard,但会发出剪贴板已弃用的警告。)
  2. 或者您可以通过将此包代码(来自 GitHub 或 node-modules)复制到您的代码库中来破解。创建您自己的组件并安装 expo install expo-clipboard 并将默认剪贴板导入替换为 index.js 文件中的 import Clipboard from 'expo-clipboard';。注意 - 不要在 node-modules 中进行此更改,因为任何软件包更新都会使您的 hack 无效。

您需要通过以下步骤覆盖此组件:

克隆此文件@twotalltotems/react-native-otp-input/dist/index.js

替换这些行:

  import Clipboard from '@react-native-community/clipboard';

  import styles from './styles';

  import { isAutoFillSupported } from './helpers/device';

  import { codeToArray } from './helpers/codeToArray';

import * as Clipboard from 'expo-clipboard';

import styles from '@twotalltotems/react-native-otp-input/dist/styles';

import { isAutoFillSupported } from '@twotalltotems/react-native-otp-input/dist/helpers/device';

import { codeToArray } from '@twotalltotems/react-native-otp-input/dist/helpers/codeToArray';

并改变 Clipboard.getString() to Clipboard.getStringAsync()

那就用自己的组件代替吧。它应该按预期工作

如果您使用的是打字稿,请在顶部添加此 // @ts-nocheck