Javascript SurveyJS与React-加载JSON时出现问题

Javascript SurveyJS与React-加载JSON时出现问题,javascript,json,reactjs,surveyjs,Javascript,Json,Reactjs,Surveyjs,我在将JSON加载到react组件中时遇到问题,该组件将呈现由SurveyJS支持的调查 当我将测量数据定义为组件文件中的对象时,一切正常。当我从API(AWS Lambda)获取JSON并将其置于状态时,它不工作 我已经记录了这两个值——我无法检测状态中的值和内联定义的值之间的任何差异——这是一个难题!SurveyJS错误消息是调查中没有可见页面或问题 我在处理状态或JSON对象时做错了什么 import React,{Component}来自“React”; 从“调查反应”导入*作为调查;

我在将JSON加载到react组件中时遇到问题,该组件将呈现由SurveyJS支持的调查

当我将测量数据定义为组件文件中的对象时,一切正常。当我从API(AWS Lambda)获取JSON并将其置于状态时,它不工作

我已经记录了这两个值——我无法检测状态中的值和内联定义的值之间的任何差异——这是一个难题!SurveyJS错误消息是调查中没有可见页面或问题

我在处理状态或JSON对象时做错了什么

import React,{Component}来自“React”;
从“调查反应”导入*作为调查;
导入“survey react/survey.css”;
导入“survey react/modern.css”
从“aws放大”导入{API};
导出默认类SimpleSurvey扩展组件{
建造师(道具){
超级(道具);
此.state={
调查:{},
};      
}
异步组件didmount(){
试一试{
让querystring={'queryStringParameters':{'surveyId':this.props.surveyId}
const surveyjson=wait this.getSurvey(querystring);
this.setState({survey:surveyjson});
}捕获(e){
警报(e);
}
}
getSurvey(查询字符串){
返回API.get(“survey”、“/survey”、querystring);
}
simpleone={“pages”:[{“name”:“page1”,“elements”:[{“type”:“text”,“name”:“question1”}]}
render(){
console.log('simpleone对象',this.simpleone)
console.log('state object',this.state.survey)
console.log('两个对象是否相同?',this.simpleone===this.state.survey)
log('simpleone string',JSON.stringify(this.simpleone))
log('state string',JSON.stringify(this.state.survey))
console.log('两个字符串是否相同?',JSON.stringify(this.simpleone)==JSON.stringify(this.state.survey))
//问题:如果使用上面定义的this.simpleone,则模型有效;如果使用API中的this.state.survey集,则模型无效
var模型=新的Survey.model(this.simpleone);
返回();
}
}
这是带有simpleone对象和状态的console.log


yes@saglamcem-问题不是在尝试创建模型之前等待异步

已更改呈现函数,以等待状态在调用新的Survey.Model之前使用API中的JSON填充


导出默认类SimpleSurvey扩展组件{
建造师(道具){
超级(道具);
此.state={
调查:空,
};      
}
异步组件didmount(){
试一试{
让querystring={'queryStringParameters':{'surveyId':this.props.surveyId}
const surveyjson=wait this.getSurvey(querystring);
this.setState({survey:surveyjson});
}捕获(e){
警报(e);
}
}
getSurvey(查询字符串){
返回API.get(“survey”、“/survey”、querystring);
}
getModel(json){
var模型=新的Survey.model(json);
返回();
}
未完成(调查、选项){
log(“调查结果:+JSON.stringify(Survey.data));
}
render(){
返回(
{this.state.survey?this.getModel(this.state.survey):null}
)
}
} 

yes@saglamcem-问题不是在尝试创建模型之前等待async

已更改呈现函数,以等待状态在调用新的Survey.Model之前使用API中的JSON填充


导出默认类SimpleSurvey扩展组件{
建造师(道具){
超级(道具);
此.state={
调查:空,
};      
}
异步组件didmount(){
试一试{
让querystring={'queryStringParameters':{'surveyId':this.props.surveyId}
const surveyjson=wait this.getSurvey(querystring);
this.setState({survey:surveyjson});
}捕获(e){
警报(e);
}
}
getSurvey(查询字符串){
返回API.get(“survey”、“/survey”、querystring);
}
getModel(json){
var模型=新的Survey.model(json);
返回();
}
未完成(调查、选项){
log(“调查结果:+JSON.stringify(Survey.data));
}
render(){
返回(
{this.state.survey?this.getModel(this.state.survey):null}
)
}
} 

欢迎来到StackOverflow!:)是不是因为您没有等待getSurvey函数,所以会出现这种情况?在我看来,这可能是一个异步操作。谢谢-我在组件挂载时等待getSurvey。我原以为当状态更新时,一切都会重新呈现。但当我将代码更改为
var model=new Survey.model(this.state.Survey)
时,似乎不欢迎使用StackOverflow!:)是不是因为您没有等待getSurvey函数,所以会出现这种情况?在我看来,这可能是一个异步操作。谢谢-我在组件挂载时等待getSurvey。我原以为当状态更新时,一切都会重新呈现。但是,当我将代码更改为
var model=new Survey.model(this.state.Survey)
时,它似乎不起作用。是的,它起作用了。在异步进程完成之前调用getModel时出现问题。以前我假设当状态被更新时,它会用新的值再次调用getModel,但显然不是这样。是的,这是有效的。在异步进程完成之前调用getModel时出现问题。之前我假设当状态更新时,它会再次使用新值调用getModel,但显然情况并非如此。