Я изучаю React и Material-ui.
Я хочу сделать несколько входных полей внутри компонента, число и значение этих полей получаются как реквизиты от родительского компонента.Я добавил функцию для перемещения фокуса, когда пользователь нажимает кнопку «Ввод», или создает новое поле, если это последнее поле.
Текущий код имеет 15 ссылок (я знаю, что это глупо, но я думаю, что это будетне более 15)Проблема в том, что фокус не перемещается в новое поле при его создании.Можете ли вы предложить лучший способ?
class ResponseInput extends Component {
componentWillMount() {
this.refs = [...Array(15)].map(r => React.createRef())
}
changeFocus = index => {
if (index < this.props.inputs.length - 1) {
this.refs[index + 1].current.focus();
} else {
this.props.addInput();
}
}
render() {
const { inputs, addInput, handleChangeInput } = this.props;
return (
<List>
{inputs.map((item, index) => (
<ListItem key={index} >
<Input
value={item}
inputRef={this.refs[index]}
onChange={(event) => handleChangeInput (index, event)}
onKeyPress= {(event) => {
if (event.key === 'Enter') {
this.changeFocus(index);
}
}}
// autoFocus
/>
</ListItem>
))}
</List>
);
}
}