我的Reactive原生版本是0.38.0
<TextInput onBlur={ (event) =>
this.handleBlurCheck(event.nativeEvent.text,params) } />在函数handleBlurCheck中,我在iOS中得到了值,但在Android中得到了undefined。
当TextInput在安卓平台上变得模糊时,如何获得价值?
nativeEvent对象在iOS上:
nativeEvent:{
eventCount: 5,
target: 1046,
text: '56'
}安卓上的nativeEvent:
nativeEvent:{
target: 1046,
}发布于 2017-11-17 09:28:19
尝试使用onEndEditing,如
<TextInput onEndEditing={ (event) => this.handleBlurCheck(event.nativeEvent.text,params) } />您可以查看已报告的问题这里。
发布于 2017-11-17 09:27:15
我只是使用onChange来获得值。
onChange={(event) => this.setState({
value: event.nativeEvent.text
})}并触发模糊的功能
发布于 2017-11-17 14:41:06
关于这些论点的文档实际上是有限的:
https://facebook.github.io/react-native/releases/0.38/docs/textinput.html
不过,作为一次散步,你可以用
<TextInput
onChangeText={(text) => this.setState({text})}
onEndEditing={() => this.handleBlurCheck(this.state.text, params)}
/>UPD.
另一个需要考虑的工作解决办法是:
<TextInput
onEndEditing={(e) => this.handleBlurCheck(e.nativeEvent.text, params)}
/>详细描述:
查看源代码,很明显,您得到的就是发送的内容:ReactTextInputBlurEvent.java。
private WritableMap serializeEventData() {
WritableMap eventData = Arguments.createMap();
eventData.putInt("target", getViewTag());
return eventData;
}与iOS代码不同的是,所有内容都已就绪:RCTEventDispatcher.m
NSMutableDictionary *body = [[NSMutableDictionary alloc] initWithDictionary:@{
@"eventCount": @(eventCount),
@"target": reactTag
}];
if (text) {
body[@"text"] = text;
}
if (key) {
if (key.length == 0) {
key = @"Backspace"; // backspace
} else {
switch ([key characterAtIndex:0]) {
case '\t':
key = @"Tab";
break;
case '\n':
key = @"Enter";
default:
break;
}
}
body[@"key"] = key;然而,如果我们看一下"onEndEditing“事件:ReactTextInputEndEditingEvent.java
private WritableMap serializeEventData() {
WritableMap eventData = Arguments.createMap();
eventData.putInt("target", getViewTag());
eventData.putString("text", mText);
return eventData;
}text属性设置在那里。
https://stackoverflow.com/questions/47346998
复制相似问题