首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SurveyJS :在React中禁用自动感谢消息

SurveyJS :在React中禁用自动感谢消息
EN

Stack Overflow用户
提问于 2019-10-03 22:27:48
回答 1查看 1.1K关注 0票数 0

我已经使用survey-react (https://www.npmjs.com/package/survey-react)在我们的react应用程序上实现了SurveyJs (https://surveyjs.io)调查。一切正常,但当调查提交时,我们使用axios将数据POSTing到数据库,并在成功与否时收到来自API的回复。

问题是,我在一个模式中实现了调查,而surveyjs似乎有一个“谢谢”页面,但我找不到禁用的方法。因此,当我提交时,我有一个组件重新呈现两次(默认的感谢页面和我的API成功/失败响应)。我可以通过在JSON文件上使用"completedHtml“来覆盖文本,但是我不能禁用它。问题是,即使我用"Processig Survey...“这样的东西覆盖它,模式上的跳转看起来也不是很好。

我的模态代码:

代码语言:javascript
运行
复制
<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>

My Survey API调用和处理:

代码语言:javascript
运行
复制
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:忘了提一下,我已经尝试过通过JSON将showCompletedPage参数作为false传递,但是,由于调查是在模式上进行的,它仍然显示模式标题(并且只显示标题),这是更糟糕的。

EN

回答 1

Stack Overflow用户

发布于 2019-10-10 14:27:07

您需要将调查的showCompletedPage设置为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58221286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档