Я создал компонент QuestionsTree, который отображает вопрос, а затем в соответствии с ответом отображает другой вопрос и так далее. Компонент работает корректно при отображении вопросов, но я хотел бы также рекурсивно построить объект ответов.
Код компонента:
import React from 'react';
import {useState} from 'react';
import Question from "./Question";
const QuestionTree = (props) => {
const {questionnaire, answersCb} = props;
const [moreQuestions, setMoreQuestions] = useState(null);
const handleAnswer = (answer)=>{
console.log('answer: ', answer);
answersCb(answer);
const option = questionnaire.options.find(option=> option.value === answer[questionnaire.id]);
if (option && option.question) {
setMoreQuestions(
<QuestionTree
questionnaire={option.question}
answersCb={answersCb}
/>);
};
};
return (
<div>
<Question
answerReceived={handleAnswer}
question={questionnaire.question}
questionId={questionnaire.id}
options={questionnaire.options}
/>
{moreQuestions}
</div>
);
};
export default QuestionTree;
Вот ссылка на мой репозиторий со всем проектом: https://bitbucket.org/rugggger/react-components/src/master/src/components/
В настоящее время answersCb возвращает только нажатый ответ -
{
"question-1": 1
}
Как мне написать функцию 'answersCb' для возврата мне текущее состояние всех ответов, которые выбрали пользователи? Что-то вроде:
{
"question-1": 1,
"question-3": 4,
"question-5": 3
}