开发者问题收集

反应本地:设置错误并从剪贴板获取文本

2020-03-31
13220
import React, { useState } from 'react'
import { SafeAreaView, View, Text, TouchableOpacity, StyleSheet } from 'react-native'
import Clipboard from '@react-native-community/clipboard'

const App = () => {
    const [copiedText, setCopiedText] = useState('')

    const copyToClipboard = () => {
        Clipboard.setString('hello world')
    }

    const fetchCopiedText = async () => {
        const text = await Clipboard.getString()
        setCopiedText(text)
    }

    return (
        <SafeAreaView style={{ flex: 1 }}>
            <View style={styles.container}>
                <TouchableOpacity onPress={() => copyToClipboard()}>
                    <Text>Click here to copy to Clipboard</Text>
                </TouchableOpacity>
                <TouchableOpacity onPress={() => fetchCopiedText()}>
                    <Text>View copied text</Text>
                </TouchableOpacity>

                <Text style={styles.copiedText}>{copiedText}</Text>
            </View>

        </SafeAreaView>
    )
}

const styles = StyleSheet.create({
//styles
})

export default App

当按下“复制到剪贴板”时,我收到一条错误消息,指出 null is not and object('evaluating NativeClipboard_1.default.setString') 当按下“查看复制的文本”时,我收到一个 TypeError Unhandlded 承诺拒绝。 此代码直接从此处复制: https://github.com/react-native-community/clipboard

enter image description here

3个回答

根据 Expo 文档 ( https://docs.expo.io/versions/v40.0.0/sdk/clipboard/ ),其 API 中提供了剪贴板。

使用

expo install expo-clipboard

安装并使用

import * as Clipboard from 'expo-clipboard';
Irv Katz
2020-12-27

我也遇到了这个问题,正如其他用户所说, react-native-communityClipboard 与 Expo 兼容。

ksingh
2020-07-30

我遇到了同样的问题。最终发现是链接问题。我按照说明运行了 react-native link,但我忘了安装 pod。请确保在链接后安装 pod。

cd ios && pod install && cd ..
Cory McAboy
2020-05-24