在 React Native 中禁用 Toast

问题描述 投票:0回答:1

我的应用程序有一个小问题。因此,当我复制短信中的文本并重新打开我的应用程序时,它将显示 toast“已复制到剪贴板”。是否可以永久禁用 React Native toast 消息传递?

reactjs react-native toast
1个回答
0
投票

是的,通过修改默认剪贴板处理方法,可以在 React Native 中禁用通用的“复制到剪贴板”toast 通知。具体来说,可以实现一种没有自动反馈消息的自定义剪贴板模块。 实现此目的的一种方法是:首先,制作标准剪贴板模块的替代品,以保留典型的 Toast 弹出窗口的显示。定义一个文件,例如 CustomClipboard.js,其中包含一个公开等效复制/粘贴功能但不会自动显示简短的“已复制”通知的类。 接下来,导入并使用自定义模块来代替整个应用程序中的默认模块。通过替换这种构造为跳过临时复制警报的生成的定制版本,人们可以保留剪贴板的复制功能,同时选择退出假定消息传递。这提供了更大的灵活性,可以为每个用例制作替代通知,也可以选择根本不发送消息。

    import { Clipboard, Platform } from 'react-native';
    
    class CustomClipboard {
      static setString(text) {
        if (Platform.OS === 'android') {
          // For Android, use the native clipboard directly without toast message
          const ClipboardManager = require('react-native/Libraries/Components/Clipboard/Clipboard.js');
          ClipboardManager.setString(text);
        } else {
          // For iOS, use the native clipboard directly without toast message
          Clipboard.setString(text);
        }
      }
    
      static getString() {
        return Clipboard.getString();
      }
    }
    
    export default CustomClipboard;

通过在发生粘贴/复制的地方用我新颖的 ClipboardManager 替换对提供的剪贴板的引用,标准处理变得无关紧要。它的角色由我的替代者填补,它可以根据需要运行而不会受到干扰。成功不再中断流程。

import CustomClipboard from './CustomClipboard';

// Use CustomClipboard.setString instead of Clipboard.setString
CustomClipboard.setString('Your text here');

// Use CustomClipboard.getString instead of Clipboard.getString
CustomClipboard.getString().then((text) => {
  console.log('Copied text:', text);
});

通过执行以下步骤,您可以防止 Toast 消息“已复制到剪贴板”出现在 React Native 应用程序中。

© www.soinside.com 2019 - 2024. All rights reserved.