为ios和android添加剪贴板组件
import Clipboard from 'react-native'
Clipboard.get((content)=>{
console.log('here is content in clipboard:%s',content)
});
var content = 'here is a string';
Clipboard.set(content);
为ios和android添加剪贴板组件
import Clipboard from 'react-native'
Clipboard.get((content)=>{
console.log('here is content in clipboard:%s',content)
});
var content = 'here is a string';
Clipboard.set(content);
嘿。感谢您为此所做的工作。
已经有一个Pasteboard
适用于 iOS 的模块 - https://github.com/facebook/react-native/blob/master/React/Modules/RCTPasteboard.m
对于 Android,您可能希望遵循相同的 API。
如果 Android 版本的 Pasteboard 正在开发中,请抄送@dmmiller。
@satya164我知道,但是你不提供js接口。并且iOS版本没有“get”方法
@TanTan-TT 是的,但它被称为Pasteboard
而不是Clipboard
。该方法可能被称为setString
. 我们不应该改变整个 API。
@satya164 我改变了API
import Pasteboard from 'react-native'
Pasteboard.getString((content)=>{
console.log('here is content in pasteboard:%s',content)
});
var content = 'here is a string';
Pasteboard.setString(content);
让我们等待@dmmiller
通过分析此 Pull 请求的责任信息,我们确定了 @nicklockwood、@vjeux 和 @sahrens 是潜在的审阅者。
iOS 粘贴板模块已经存在。为什么要添加 Libraries/Components/Pasteboard/Pasteboard.ios.js?
同意@dmmiller。我们正在尝试尽可能地统一 iOS 和 Android API,但我认为没有充分的理由对它们进行不同的命名。
iOS Pasteboard 模块非常新,而且还没有 JS 包装器,所以如果人们认为 JS 文件“Clipboard.js”更好的话,我很乐意将其命名为“Clipboard.js”——稍后我可以重命名 iOS 本机模块。
至于 iOS 上缺少的 get 方法,暂时将该 API 标记为 Android 专用,稍后我们可以添加 iOS 支持。
是的,Clipboard
在我看来也是一个更好的名字。
@dmmiller抱歉,我不明白你的解决方案,你的意思是如果没有用于粘贴板的js包装器,直接使用从RTCPasteboard导出的方法?但在我看来,如果这样做,用户必须导入NativeModule而不是react-native?我认为在 Java 世界中 RTCPasteboard 是一个奇怪的类名
@ide @satya164也许我可以将js包装器的名称更改为“Clipboard”,然后用户可以从“react-native”导入它
@TanTan-TT 听起来是个好方法。将 JS 文件和 android 类命名为“Clipboard”,将 iOS 类保留为 iOS 中的 Pasteboard,并在 Clipboard.js 文件中执行如下操作:
var RCTClipboard = NativeModules.Clipboard || NativeModules.Pasteboard;
不需要添加 Pasteboard.ios.js 或类似的东西。
我们内部确实有一个粘贴板模块,并计划将其开源: https ://gist.github.com/mkonicek/4556908b269919e1bd31
请以此为基础编写您的代码。
我同意其他人的观点,即“剪贴板”对于 Android 和 iOS 来说都是一个更好的名字。请将所有出现的内容替换为您能找到的“粘贴板”,包括字符串常量、Java 类和包名称等。
我将在 2015 年 12 月 6 日之前不在办公室。
有任何问题请向金豪耿寻求帮助。
注意:这是对您于 2015 年 12 月 3 日上午 7:10:21 发送的消息“回复:[react-native]为 ios 和 android 添加剪贴板组件 (#4384)”的自动回复。
这是此人离开时您收到的唯一通知。
@mkonicek 好的,我会处理的。但我仍然对 js 包装文件有一个建议。基于v0.16的粘贴板,用户必须这样使用该模块
var pasteboard = require('NativeModules').pasteboard;
但对于其他 API,代码就像
import {ToastAndroid} from 'react-native'
我认为上面的代码比 require('NativeModule') 更正式,它就像一个内部 API。
@TanTan-TT 更新了拉取请求。
是的,我同意要求 mdule 应该与 ToastAndroid 等其他内容保持一致。
@TanTan-TT 更新了拉取请求。
@mkonicek 我已经拉取了最新版本的请求(包括在 UIExplore 中添加演示),并且我已经通过了 iOS 和 Android UIExplore 中的测试。但 Travis CI 告诉我有一些错误,
Examples/UIExplorer/ClipboardExample.js:20
20: Clipboard,
^^^^^^^^^ property `Clipboard`. Property not found in
23: } = React;
^^^^^ Object.create
但确实有效。我不知道如何处理这些错误,并且我相信有些错误不是由我的代码引起的。但您仍然可以查看代码。谢谢。
很抱歉在已经开放很久的 PR 中提出了另一件事,但是我们真的希望方法名称是Clipboard.getClipboardString
andClipboard.setClipboardString
吗?就我个人而言,我更喜欢Clipboard.getString
and Clipboard.setString
,不需要额外的Clipboard
。
@satya164在js API中,它确实不是“剪贴板”
@TanTan-TT Native 中有什么不同的原因吗?
如果我们将 Native 方法更改为setString
和getString
,我们可以大大简化Clipboard.js
文件,
module.exports = require('NativeModules').Clipboard;
@satya164 ios 和 Android 都有吗?
@TanTan-TT 是的:)
@TanTan-TT 更新了拉取请求。
@satya164 修复它!
@facebook-github-bot Shipit
感谢您的导入。如果您是 FB 员工,请访问https://our.intern.facebook.com/intern/opensource/github/pull_request/540841482735048/int_phab进行审核。
@nicklockwood 谢谢
合并这个。我最终对 Java 代码进行了一些调整。
再次查看 API,我真的认为getString
应该提供错误回调,而不是如果不起作用就默默失败。一旦它落地,你能为此发送一个单独的 PR 吗?
@mkonicek 好的。知道了。
有人可以为此制作一份文档吗?谢谢!
@sunnylqm 我可以写,但我不知道如何在这个网站上写这个。@satya164 你能指导我为剪贴板编写文档吗?
他们似乎将doc以某种格式放在组件源中,例如javadoc。
@sunnylqm 我知道。但在这种情况下,没有js文件,也没有地方放置jsdoc。
@TanTan-TT 您可以在JS文件中编写API。无论如何,为了向后兼容,我们都需要这样做。