Как отобразить «текст копируется» пользователю после того, как текст был скопирован? - PullRequest
2 голосов
/ 16 января 2020

Как отобразить «текст копируется» пользователю после того, как текст был скопирован?

const dataArray = [ { title: "Invoice Reference Number", content:QRCODE_SAMPLE.Irn } ];

<TouchableOpacity activeOpacity={1}
    onPress={() => Clipboard.setString(QRCODE_SAMPLE.Irn)}>   
    <Accordion style={{paddingTop:10,paddingBottom:50,backgroundColor:'#E0DDDD'}}dataArray={dataArray} expanded={1}>
    </Accordion>
</TouchableOpacity> 

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Вы можете сделать это так:

    import {ToastAndroid} from 'react-native';

Создать эту функцию:

    onCopyPressed(){

    Clipboard.setString(QRCODE_SAMPLE.Irn);
    ToastAndroid.show('A pikachu appeared nearby !', ToastAndroid.SHORT);
    }

И вызвать эту функцию так:

const dataArray = [ { title: "Invoice Reference Number", content:QRCODE_SAMPLE.Irn } ];
<TouchableOpacity activeOpacity={1}
        onPress={this.onCopyPressed.bind(this)}>   
        <Accordion style={{paddingTop:10,paddingBottom:50,backgroundColor:'#E0DDDD'}}dataArray={dataArray} expanded={1}>
        </Accordion>
    </TouchableOpacity> 
0 голосов
/ 16 января 2020

Я никогда раньше не использовал буфер обмена, но я предполагаю, что ваш код работает, тогда:

const [clipboardString, setClipboardString] = useState('');

handleClipboardAction = (str) => () => {
    Clipboard.setString(str);
    setClipboardString(setClipboardString)
}

<TouchableOpacity activeOpacity={1}
    onPress={handleClipboardAction(str)}>   
    <Accordion style={{paddingTop:10,paddingBottom:50,backgroundColor:'#E0DDDD'}}dataArray={dataArray} expanded={1}>
    </Accordion>
</TouchableOpacity> 

Затем вы можете наблюдать состояние, чтобы увидеть, есть ли что-нибудь скопированное, и условный рендер "Текст скопирован" сообщение:

{clipboardString.length > 0 && <Text>Text is copied</Text>}
...