我的项目正在使用react,redux和redux-thunk。
我希望在启动清除页面的功能之前等待我的功能结束。不幸的是,我在.then
中访问我的函数时遇到了问题这是我之前没有承诺的代码然后:
this.props.dispatch(ScheduleAction(..))
this.props.deleteTab()
问题是有时候在将信息发送到我的服务器之前调用了deleteTab(),所以不太好。
然后我做了:Promise.resolve(this.props.dispatch(ScheduleAction(..)))
.then(function(response) {
this.props.deleteTab();
console.log("TabDeleted !!!");
return response
})
现在的问题是我无法访问this.props.deleteTab();
我有这个错误:
未捕获(承诺)TypeError:无法读取未定义
的属性'props'
如果有人知道如何通过访问.then中的道具来解决这个问题,请提前感谢!!
答案 0 :(得分:6)
试试这个。你当时没有访问权限。如果您使用如下箭头方法,您应该能够访问它。
Promise.resolve(this.props.dispatch(ScheduleAction(..)))
.then((response)=> {
this.props.deleteTab();
console.log("TabDeleted !!!");
return response
})
答案 1 :(得分:0)
您遇到的问题是您丢失了this
关键字的上下文,这意味着this
现在未定义。
由于您可以在承诺之外访问this.props
,您想要的是bind
this
promise
这个功能,这样做就像这样做
Promise.resolve(this.props.dispatch(ScheduleAction(..)))
.bind(this)
.then(function(response) {
this.props.deleteTab();
console.log("TabDeleted !!!");
return response
})
答案 2 :(得分:0)
希望这种方法适合你
const $this = this;
const { dispatch } = this.props;
Promise.resolve(dispatch(ScheduleAction(..)))
.then(function(response) {
$this.deleteTab();
console.log("TabDeleted !!!");
return response;
})