Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Почему значения хуков не переприсваиваются?
@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 Простой
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Ваш ответ на вопрос

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

Потому что уже есть похожий вопрос.
Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽