我使用 Survey-react ( https://surveyjs.io ) 对我们的 React 应用程序实现了 SurveyJs ( https://www.npmjs.com/package/survey-react ) 调查。一切正常,但提交调查后,我们将使用 axios 将数据发布到数据库,并从 API 接收回复(无论成功与否)。
问题是我已经在模式中实现了调查,而 Surveyjs 似乎有一个“谢谢”页面,我无法找到禁用的方法。因此,当我提交时,组件会重新渲染两次(默认的感谢页面和我的 API 成功/失败响应)。我可以通过在 JSON 文件上使用“completedHtml”来覆盖文本,但我无法禁用它。问题是,即使我用“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:忘记提及,我已经尝试通过 JSON 将 showCompletedPage 参数传递为 false,但是,由于调查是在模态上进行的,因此它仍然显示模态标题(并且仅显示标题),这更糟糕。
最佳答案
您需要设置showCompletedPage一项调查结果为假。
关于javascript - 调查JS : Disabling the automatic Thank You Message in React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221286/