Как рекурсивно построить объект ответов в React? - PullRequest
0 голосов
/ 30 марта 2020

Я создал компонент 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
}
...