我的本机版本为0.38.0
<TextInput onBlur={ (event) =>
this.handleBlurCheck(event.nativeEvent.text,params) } />
在功能handleBlurCheck
中,我在iOS上获得了值,但我在Android上获得了undefined
。
如果在Android平台上模糊TextInput
时如何获取价值?
iOS上的nativeEvent
对象:
nativeEvent:{
eventCount: 5,
target: 1046,
text: '56'
}
Android上的nativeEvent
:
nativeEvent:{
target: 1046,
}
答案 0 :(得分:1)
尝试 onEndEditing ,例如
<TextInput onEndEditing={ (event) => this.handleBlurCheck(event.nativeEvent.text,params) } />
您可以查看报告的问题Appium-iOS-Inspector
答案 1 :(得分:0)
我只是使用onChange来获取值。
onChange={(event) => this.setState({
value: event.nativeEvent.text
})}
并触发模糊功能
答案 2 :(得分:0)
关于参数的文档非常有限:
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;
但是,如果我们看一下&#34; onEndEditing&#34;事件: ReactTextInputEndEditingEvent.java
private WritableMap serializeEventData() {
WritableMap eventData = Arguments.createMap();
eventData.putInt("target", getViewTag());
eventData.putString("text", mText);
return eventData;
}
text
属性设置在那里。
答案 3 :(得分:0)
模糊功能具有此类参数。
onBlur = (event, newValue, previousValue) =>{ }
更改后的值由
给出newValue
参数,但在android中由
给出previousValue
因此您可以使用此逻辑获取文本值。
import {isUndefined} from 'lodash';
onBlur = (event, nv, pv) =>{
const value = isUndefined(nv)? pv:nv;
// use value to as the text field value
}