我正在通过映射组件并向下传递玩家编号来呈现玩家名称的文本输入。我希望用户按Enter键,然后屏幕将焦点放在下一个输入上。
我已经尝试过
<TextInput style={styles.nameBox} placeholder="Enter Name" onChangeText={(text) => this.setState({text})} ref={`input-${this.props.number}`}
onSubmitEditing={value => {
this.setState({ value })
if (value) this.refs.input_2.focus();
}} />
问题是我无法对input_2进行硬编码,因为这样我的所有输入都将采用这种方式。我希望它专注于“ input-this.props.number ++”,基本上是以下输入。
答案 0 :(得分:1)
您可以开发一个在返回时触发的函数,并将要获取焦点的输入类型的ID用作参数。
以下示例代码由medium.com的Aung Myint Thein编写:
//sample text fields
<TextField
label={"Field 1"}
blurOnSubmit={ false }
returnKeyType={ 'next' }
onSubmitEditing={() => { this.focusTheField('field2'); }}
/>
<TextField
ref={input => { this.inputs['field2'] = input }}
label={"Field 2"}
/>
//function
// variable to hold the references of the textfields
inputs = {};
// function to focus the field
focusTheField = (id) => {
this.inputs[id].focus();
}
希望这会有所帮助