Javascript 反应-承诺-“承诺”;这";是未定义的
我肯定这是一个初学者的问题,但实际上我不明白为什么Javascript 反应-承诺-“承诺”;这";是未定义的,javascript,reactjs,react-redux,es6-promise,Javascript,Reactjs,React Redux,Es6 Promise,我肯定这是一个初学者的问题,但实际上我不明白为什么这个是未定义的。 但让我们从头开始。我正在使用react和react redux加载数据。在这种特殊情况下,我首先要加载项目的所有位置,然后加载验证文件。这是两个查询,所以我想确定,在开始加载验证之前,位置已完全加载。所以我想-哦,让我们在这里用一个promise 它从方法加载验证(事件)开始。在此方法中,将调用方法loadProjectPositions(event)。我可以看到项目位置已正确加载。 加载位置时,应先加载验证文件(。然后(()…
这个
是未定义的。
但让我们从头开始。我正在使用react
和react redux
加载数据。在这种特殊情况下,我首先要加载项目的所有位置,然后加载验证文件。这是两个查询,所以我想确定,在开始加载验证之前,位置已完全加载。所以我想-哦,让我们在这里用一个promise
它从方法加载验证(事件)
开始。在此方法中,将调用方法loadProjectPositions(event)
。我可以看到项目位置已正确加载。
加载位置时,应先加载验证文件(。然后(()…
)。
实际上在这个.then()
方法中,这个
是未定义的,但是为什么呢
更新:
即使我在构造函数中绑定loadVerifications
,它也不起作用。此
保持未定义
您应该使用bind(this)方法进行loadVerifications,从外部函数或
另一个是箭头函数loadVerifications=(event)=>{…}好的,感谢所有提示和提示。最近发现,Chrome由于任何原因都没有显示数据,但数据是可用的。我只需添加一个console.log(this.props)就可以找到
进入代码,然后它向我展示了所有的道具
,我可以看到这个
不是未定义的
但真正的问题是,当时没有加载数据。因此我需要在方法loadProjectPositions
中添加then
,以确保在解析承诺之前返回数据
loadProjectPositions(event) {
return new Promise((resolve,reject) => {
this.props.getProjektPositionenByProjektIdForModulId(13, event.value)
.then(() => {
resolve(this)
});
})
}
添加此项后,当时所有数据都已正确加载,然后全部工作。我认为您还必须绑定loadVerifications
函数。如果将loadVerifications
定义为loadVerifications=(事件)=>{…}
一切都将正常工作,您需要绑定此
即使我在构造函数中绑定loadVerifications,它也不起作用。这仍然是未定义的。您是否像这样使用绑定:this.loadVerifications=this.loadVerifications.bind(this);
?是的,正如我在上面所写的。即使我在构造函数中绑定loadVerifications,它也不起作用。这仍然是未定义的。使用箭头函数。如果您开始使用es6功能,您将不会面临这样的问题。
loadProjectPositions(event) {
return new Promise((resolve,reject) => {
this.props.getProjektPositionenByProjektIdForModulId(13, event.value)
.then(() => {
resolve(this)
});
})
}