У меня есть json, который содержит вопросы и ответы, которые отображаются индивидуально в div. Пользователь может щелкнуть ответ, и у меня есть функция onClick, которая переходит к следующему вопросу.
() => setQuestionIndex(() => questionIndex + 1
Я хотел бы, чтобы, когда "вопросы" json были завершены, были добавлены новые "решения" json:
onAnswer = {() => {
if (questionIndex === question.length) {
() => history.push('/forms/solutions')
} else {
() => setQuestionIndex(() => questionIndex + 1)
}
}}
Когда я использую только () => setQuestionIndex(() => questionIndex + 1, он отлично переходит к следующим вопросам, но условный оператор не работает, есть предположения?
Полный код:
const Form = enhance(({
styles, scenario, questionIndex, setQuestionIndex
}) => {
const { questions } = scenarios[scenario];
const questionTabs = questions.map((q, i) => {
if (i === questionIndex) {
return <Tab key = {i} {...css(styles.tabActive)}> {i} </Tab>
}
return <Tab key = {i} {...css(styles.tab)}> {i} </Tab>
})
const questionPanels = questions.map((question, i, history) => {
return (
<TabPanel key = {i}>
<Question
question = {question.question}
answers = {question.answers}
visualAnalogScale = {question.VAS}
//onAnswer = {() => setQuestionIndex(() => questionIndex + 1)}
onAnswer = {() => {
if (questionIndex === question.length) {
() => history.push('/forms/solutions')
} else {
() => setQuestionIndex(() => questionIndex + 1)
}
}}
/>
</TabPanel>
);
});
Что вы подразумеваете под "не работает"? Каково ожидаемое поведение? Где setQuestionIndex() код функции? Использует ли он объект history, чтобы «перейти к следующим вопросам»?
В условном выражении должно быть сказано, что если индекс вопроса равен количеству вопросов (конец json-файла), то push push json-файл решения, в противном случае перейти к следующему вопросу. Я обновил полный код
С условным оператором, когда я нажимаю на ответ, он не переходит к следующему вопросу. Но если я использую только эту линию onAnswer = {() => setQuestionIndex(() => questionIndex + 1)}, это работает. Но я не получаю решения json в конце.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это выключение на одну ошибку? Если да, то эта строка
if (questionIndex === question.length) {
Должно быть:
if (questionIndex === question.length - 1) {
Кроме того, почему все является функцией?
Почему ваше заявление обернуто
{...}?