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