Я пытаюсь создать приложение для создания тестов, в котором пользователь может добавить несколько вопросов в динамическую форму c. В этой форме есть компоненты вопросов, которые пользователь может добавлять или удалять по своему усмотрению. Когда пользователь щелкает новый обработчик вопроса (handleNewQuestion), новый вопрос присоединяется к массиву вопросов в состоянии компонента.
const handleNewQuestion = () => {
setQuestions([
...questions,
<Question
key={questions.length}
count={questions.length}
formData={formData}
setFormData={setFormData}
handleRemoveQuestion={handleRemoveQuestion}
/>
])
}
<Button onClick={handleNewQuestion} variant="outline-primary">
New Question
</Button>
Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь удалить вопрос с Обработчик удаления вопроса (handleRemoveQuestion) всегда удаляет неправильный вопрос. Пытаясь решить эту проблему, я консоль зарегистрировал массив вопросов в состоянии и обнаружил, что новых вопросов не было в массиве, а также я получаю разные результаты в зависимости от того, на какой компонент вопроса я нажимаю. Вы можете увидеть результаты, которые я получаю на предоставленном изображении.
Форма для викторины с 2 вопросами
По сути, происходит то, что в зависимости от того, какой компонент вопроса я пытаюсь удалить консоль показывает массив вопросов в разных состояниях. Например, когда я пытаюсь удалить первый компонент вопроса, я получаю пустой массив, а когда я щелкаю второй компонент вопроса, я получаю массив с одним элементом. Даже если будет задано несколько вопросов, если я попытаюсь удалить первый вопрос, я все равно получу пустой массив.
Я понятия не имею, почему это происходит, и я был бы очень признателен, если бы кто-то мог объяснить, что здесь происходит .
ура!