React Native有一个TextInput组件来接受用户输入,我对它们之间的区别感兴趣
onEndEditing (callback that is called when text input ends)
的onblur (callback that is called when the text input is blurred)
是否有一个只有onBlur无法解决的场景,何时onEndEditing有用?
哈,首先让我说我讨厌你问这个问题!你让我得去找答案:)
我相信这源于历史,因为它源于具有原生事件的iOS UIControlEventEditingDidEnd
.这可能是之前的命名blur
是作为抽象引入的.
TL:DR;
onEndEditing
在我看来应该真的被弃用,但是现在你应该使用它,因为它是最平台无关的模糊版本.见下文.
两者onBlur
并onEndEditing
得到一个事件.在iOS上,这两者似乎完全相同,并且事件具有本机文本.在Android中,它是两个不同的事件,只有其中一个可以访问文本.对我来说,这似乎是一个错误.
请注意Android onEndEditing和Android onBlur之间的区别.
// this is undefined on Android onBlur={(e) => alert(e.nativeEvent.text)}
因此,如果在模糊期间阅读文本,您现在可以获得跨平台的可用性onEndEditing
.
请参阅此rnplay以查看操作系统的差异
看看iOS和Android的例子,似乎onEndEditing
是要传递内容TextInput
,而onBlur
不是要传递任何数据:
iOS示例
Android示例
提出这些事件之间实际上存在差异.在这里,我们可以看到onEndEditing
针对原生Android提出的onEditorAction
,而onBlur
不是.该操作可以是"搜索"(这对应于Android键盘上的特殊"搜索"图标),但我不知道React Native API允许您将这些操作图标显示为键盘的一部分.
一般来说,查看示例 /实现是理解未充分记录的内容的好方法.
如果JS文档中不清楚,请提交拉取请求以澄清它.如果实现执行的操作没有意义或平台之间不一致,请提交拉取请求以修复实现.这应该有助于其他人.