Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Почему значения хуков не переприсваиваются?
@BladeHeroku

Как получить актуальный id, если useState не отражает изменения немедленно?

Хочу сделать форму для авторизации, но при нажатии на теги input, получаю старые id тегов input'ов, которые были шаг назад. Как мне решить эту проблему?

P.S В console.log(editAnswer), я вывожу id инпутов.

import React, {useState} from 'react';

const Form = () => {

    const [answers, setAnswers] = useState(['1', '2', '3'])
    const [editAnswer, setEditAnswer] = useState(null)

    function changeElement(event) {

        setAnswers(
            [
                ...answers.slice(0, editAnswer),
                event.target.value,
                ...answers.slice(editAnswer + 1)
            ]
        )
    }

    function initialInput(index) {
        setEditAnswer(index)
        console.log(editAnswer)

        if (editAnswer)
            return answers[editAnswer]
        return answers[0]
    }


    function result() {
        console.log(answers)
    }

    return (
        <div style={{display: 'flex', flexDirection: "column"}}>
            {
                answers.map((answer, index) =>
                    <input key={index}
                           value={answer}
                           onChange={changeElement}
                           onClick={() => initialInput(index)}
                           type="text" />
                )
            }
            <button onClick={result}>Результат</button>
        </div>
    );
};

export default Form;
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Простой
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽