SurveyJS: отключение автоматического сообщения с благодарностью в React - PullRequest
0 голосов
/ 03 октября 2019

Я внедрил опрос SurveyJs (https://surveyjs.io) в нашем приложении реагирования с использованием survey-реагировать (https://www.npmjs.com/package/survey-react). Все работает нормально, но когда опрос отправлен, мы отправляем данные в БД с помощью axiosи получение ответа от API в случае успеха или нет.

Проблема заключается в том, что я провел опрос в модальном режиме, и на сайте surveyjs, похоже, есть страница "Спасибо", которую я не могу найти способпоэтому, когда я отправляю, у меня есть компонент, который повторно рендерит дважды (страница благодарности по умолчанию и мой ответ об успешном / неудачном выполнении API). Я могу перезаписать текст, используя "completeHtml" в файле JSON, но не могу отключить егоПроблема в том, что скачок на модале выглядит не очень хорошо, даже когда я перезаписываю его чем-то вроде «Processig Survey ...»

Мой модальный код:

<Dialog
                open={dialogOpen}
                onClose={handleClose}
                aria-labelledby="Your Opinion Matters"
                aria-describedby="Short Customer Survey"
                className={classes.modal}
            >
                <DialogTitle id="alert-dialog-title" onClose={handleClose}>
                    {(status === '') ?
                        `We would like to hear from you`
                        :
                        `Thank You`
                    }
                </DialogTitle>
                <DialogContent>
                    {surveyActive ?
                        <Survey.Survey model={model} onComplete={onComplete} />
                        :
                        <span style={{fontSize: '1.5em', color: '#999'}}>{status}</span>
                    }
                </DialogContent>
                {(status !== '') &&
                <DialogActions>
                    <Button variant="contained" onClick={handleClose} color="primary">
                        Close
                    </Button>
                </DialogActions>
                }
            </Dialog>

МойВызов и обработка API опроса:

const setSurveyData = (data, options) => {
    const authToken = sessionStorage.token;

    return axios({
        method: 'post',
        url: '/users/survey',
        headers: {
            'Authorization': `Bearer ${authToken}`,
        },
        data: {
            survey: data
        }
    })
        .then(res => {
            const data = res.data;
            setStatus(data.msg);
             setSurveyActive(false);
        })
        .catch(err => {
            catchAxios(err);
        })
};

// run on survey complete
const onComplete = (survey, options) => {
    return setSurveyData(survey.data, options)
};

const handleOpen = () => {
    setDialogOpen(true);
    setSurveyActive(true);
};

const handleClose = () => {
    setDialogOpen(false);
    setStatus('');
};

Я смотрел на это около 5 часов и рисовал пробел ... Я перепробовал все, что мог придумать. Любая помощь будет высоко ценится,Спасибо.

PS: забыл упомянуть, что я уже пытался передать параметру showCompletedPage значение false через JSON, однако, поскольку опрос является модальным, он все равно показывает модальное название (и только название)что хуже.

1 Ответ

1 голос
/ 10 октября 2019

Вам необходимо установить showCompletedPage опроса в false.

...