我有一个React组件,它有一个函数在其中一个函数中调用Meteor登录方法。如果登录成功,我需要调整组件状态,但这是失败的。我猜我需要另一个绑定(这个)或某个地方,但不知道在哪里。或者我可能需要将setState提取到另一个函数中并从此函数中调用它。什么样的典型/最好的方法是这样的?
-SomeComponent.jsx
handleSubmitLogin(e) {
e.preventDefault();
let email="my@email.com";
let password='mypassword';
Meteor.loginWithPassword(email, password, function(error) {
if (Meteor.user()) {
this.setState({ //<- ***THIS ERRORS WITH 'Cannot read property setState of undefined'***
showLogin: false,
});
} else {
console.log("There was an error logging in: "
+ error.reason);
}
})
}
TIA!
答案 0 :(得分:3)
看起来你正在使用ES6,所以你可以使用箭头功能:
Meteor.loginWithPassword(email, password, (error) => { ... });
箭头函数有效地从其周围范围继承this
,因此this
将引用函数中正确的东西。
如果你被困在ES5上,你可以简单地绑定this
上下文:
Meteor.loginWithPassword(email, password, function (error) { ... }.bind(this));