【问题标题】:React Native - Shift focus to next Input box upon pressing "Next" button in keyboardReact Native - 按下键盘上的“下一步”按钮后将焦点转移到下一个输入框
【发布时间】:2018-10-22 04:47:29
【问题描述】:

我是 React Native 世界的新手。 我想将焦点从第一个输入框转移到第二个输入框。 请找到我的以下代码。

<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: ""
};

请指导。 提前致谢。

【问题讨论】:

标签: javascript android ios react-native input


【解决方案1】:
<TextInput
    placeholder = "FirstTextInput"
    returnKeyType = { "next" }
    onSubmitEditing={() => { this.secondTextInput.focus(); }}
    blurOnSubmit={false}
/>
<TextInput
    ref={(input) => { this.secondTextInput = input; }}
    placeholder = "secondTextInput"
/>

【讨论】:

    【解决方案2】:

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

    试试这个

    1. 将 Ref 添加到第二个 TextInput ref={(input) => { this.secondTextInput = input; }}

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

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

    【讨论】:

      【解决方案3】:

      试试这个:

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

      【讨论】:

        【解决方案4】:

        你可以通过这个直接获取实例。并且 null 检查可能是一个很好的调试选择。

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

        【讨论】:

          猜你喜欢
          • 2021-08-07
          • 2015-12-21
          • 2020-10-07
          • 1970-01-01
          • 1970-01-01
          • 2015-05-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多