1
在我的React应用程序中,我试图在Promise的主体内调用this.setState()
- 但是,this
是undefined
。JavaScript/React - 在新的Promise构造函数中访问绑定'this'
功能是一个叫做ui.js
模块:
export const toggleButtonsDisabled = function(buttonsAreDisabled) {
return new Promise(function(resolve) {
this.setState({"buttonsDisabled": !buttonsAreDisabled},() => {
resolve()
})
})
}
,它是在一个组件中引用,象这样:
import { toggleButtonsDisabled } from "../../scripts/ui"
class Test extends Component {
constructor() {
this.toggleButtonsDisabled = toggleButtonsDisabled.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
this.state = {
"buttonsDisabled": false
}
}
handleSubmit() {
this.toggleButtonsDisabled(this.state.buttonsDisabled)
.then(function() {
// DO SOME STUFF...
})
}
// FORM, ETC...
}
如果handleSubmit()
被调用时,一个错误出现回话说cannot read property 'setState' of undefined
- 中参照this
已经失去了诺言的范围。
如果我重写功能:
export const toggleButtonsDisabled = function(buttonsAreDisabled) {
const reactComponent = this
return new Promise(function(resolve) {
reactComponent.setState({"buttonsDisabled": !buttonsAreDisabled},() => {
resolve()
})
})
}
然后它工作,没有问题... ...但有来处理这更优雅的方式?还是我要求不可能的?
尝试箭头语法:'返回新希望(解析=> {' – Andy
@Andy谢谢!这样做 - 如果你能做出答案,我会接受。 – skwidbreth