【发布时间】:2020-03-01 15:21:40
【问题描述】:
首先这里是我的自定义组件。
return (
<View style={[styles.container, this.props.style]}>
<TextField
style={styles.inputText}
autoCapitalize={this.props.autoCapitalize}
ref={this.props.ref}
autoCorrect={false}
onFocus={() => this.setState({isFocus:true})}
onBlur={() => this.setState({isFocus:false})}
value={this.state.text}
label={this.props.placeholder}
secureTextEntry={this.props.secureTextEntry}
blurOnSubmit={this.props.blurOnSubmit}
keyboardType={this.props.keyboardType}
returnKeyType={this.props.returnKeyType}
textContentType={this.props.textContentType}
// onSubmitEditing={this.props.focus(this.props.textInput)}
onSubmitEditing={this.props.onSubmit}
placeholderTextColor='grey'
onChangeText={this.props.onChangeText ? this.props.onChangeText : (text) => this.setState({ text })}
editable={this.props.editable}
/>
</View>
);
现在在提交电子邮件字段时,我想将焦点放在密码字段上,在提交密码时我想提交表单。
下面是代码:
<MaterialTextInput
placeholder="Email"
// ref={(input) => { this.emailInput = input; }}
ref={ref => (this.emailInput = ref)}
onSubmit = {() => this.passwordInput.focus()}
onChangeText={(text) => this.handleEmailchange(text)}/>
<MaterialTextInput
placeholder="Password"
ref={ref => this.passwordInput = ref}
onSubmit = {() => this.submit()}
onChangeText={(text) => this.handlePasswordchange(text)}/>
但这不起作用。 它给出了错误,
this.passwordInput.focus is undefined
请告诉我我在这里做错了什么?
【问题讨论】:
-
因为
this.passwordInput中的组件<MaterialTextInput>实际上是<View>而不是<TextField>。而 View 没有任何名为focus()的方法!!!
标签: reactjs react-native