React Native-按下键盘上的“下一步”按钮,将焦点移至下一个输入框

时间:2018-10-22 04:47:30

标签: javascript android ios react-native input

我在回应土著世界方面非常陌生。 我想将焦点从第一个输入框转移到第二个输入框。 请找到我下面的代码。

<View style={styles.inputViewStyle}>
                  <TextInput
                    ref={firstnameRef => (this.firstnameRef = 
                    firstnameRef)}
                    label="Firstname"
                    returnKeyType="next"
                    autoCorrect={false}
                    value={this.state.firstname}
                    onSubmitEditing={() => 
              this.refs.middlenameRef.focus()}
                    onChangeText={firstname => this.setState({ firstname })}
                    blurOnSubmit={false}
                  />
                </View> 

    <View style={styles.inputViewStyle}>
                  <TextInput
                    ref={middlenameRef => (this.middlenameRef = middlenameRef)}
                    label="Middlename"
                    returnKeyType="go"
                    value={this.state.middlename}
                    onChangeText={middlename => this.setState({ middlename })}
                  />
                </View>

我遇到错误->“未定义不是对象(正在评估'this2.middlenameRef.focus()')”

更新: constructor(props) { super(props); this.state = { firstname: "", middlename: "", lastname: ""
};

请指导。 预先感谢。

4 个答案:

答案 0 :(得分:0)

尝试一下:

onSubmitEditing={() => { this.middlenameRef.focus() }}

答案 1 :(得分:0)

在触发前一个TextInput的onSubmitEditing时,设置第二个TextInput焦点。

尝试一下

  1. 向第二个TextInput添加引用 ref = {(输入)=> {this.secondTextInput =输入; }}

  2. 将焦点函数绑定到第一个TextInput的onSubmitEditing事件。 onSubmitEditing = {()=> {this.secondTextInput.focus(); }}

  3. 请记住,将blurOnSubmit设置为false,以防止键盘闪烁。 blurOnSubmit = {false}

答案 2 :(得分:0)

您可以通过此直接获取实例。空检查可能是调试的好选择。

onSubmitEditing={() => this.middlenameRef && this.middlenameRef.focus()}

答案 3 :(得分:0)

<TextInput
    placeholder = "FirstTextInput"
    returnKeyType = { "next" }
    onSubmitEditing={() => { this.secondTextInput.focus(); }}
    blurOnSubmit={false}
/>
<TextInput
    ref={(input) => { this.secondTextInput = input; }}
    placeholder = "secondTextInput"
/>