фокусный ввод с реагирующими крючками - PullRequest
1 голос
/ 21 марта 2020

Я пытался заставить useRef работать, и я не могу понять, почему это не так.

У меня есть контролируемый компонент ввода и форма, которая оборачивает несколько из этих входов. после отправки ввод добавляется в виде строки в списке, и новая форма находится внизу всех отправленных строк.

после отправки в новой форме фокусируется последний ввод. Как я могу сделать это сосредоточиться на первом входе? Я пытался использовать useRef и useEffects для фокуса при каждом рендеринге, но это не сработало. Я даже не уверен, нужно ли мне использовать React.forwardRef, поскольку входной тег html обернут компонентом Input.

другая вещь (я не уверен, если это возможно): как я могу может заставить его фокусировать следующий вход после заполнения (я уже ввожу 1 символ на вход, но не уверен, как перейти к следующему входу при изменении). количество входных данных не является постоянным, и невозможно использовать хуки в al oop.

, вот компонент ввода:

function Input({ value, handleChange}) {
    let props = {
        value,
        onChange: (e) => handleChange(e.target.value[e.target.value.length - 1]),
    }
    return <input {...props}/>
}

и то, что форма отображает:

<form onSubmit={(e) => sendForm(e)}>
    {values.map((i, idx) => {
        let props = {
            key: idx,
            value: values[idx],
            handleChange: updateValue(idx),
        }
        return <Input {...props} />
    }
    )}
    <input type="submit" value="Submit" />
</form>

Спасибо.

Edit pedantic-http-ggujj

1 Ответ

0 голосов
/ 21 марта 2020

Внесены некоторые изменения, пожалуйста, посмотрите внимательно

Так что в основном вам нужен только первый элемент для ссылки, нет необходимости в массиве. И вы не передаете ссылку на ваш пользовательский ввод

Edit naughty-johnson-psfy9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...