我在meteorJS中使用了react-router-dom。创建帐户后,我尝试重定向。现在,帐户已成功创建,但重定向不起作用。
我也尝试在成功创建帐户时设置setState。它也不起作用。
handleSubmit(event) {
event.preventDefault();
Accounts.createUser(
{
username: this.state.mobile,
password: "123"
},
function(err) {
if (err) {
console.log("err", err);
} else {
console.log("account created");
this.setState({
redirect: true
});
return <Redirect to="/" />;
}
}
);
}
此消息显示在控制台中
Exception in delivering result of invoking 'createUser': TypeError: this.setState is not a function
答案 0 :(得分:0)
您需要将回调绑定到当前上下文,可以使用箭头功能来实现。
此外,回调函数中的return语句不会执行您认为正在做的事情,该值会丢失,您应该使用历史记录对象推送新路由
handleSubmit(event) {
event.preventDefault();
Accounts.createUser(
{
username: this.state.mobile,
password: "123"
},
err => { // here use the arrow function to bind to the current "this"
if (err) {
console.log("err", err);
} else {
console.log("account created");
this.setState({
redirect: true
});
hashHistory.push("/"); // push the next route
}
});
}
答案 1 :(得分:0)
您丢失了上下文
handleSubmit(event) {
event.preventDefault();
let that = this;
Accounts.createUser(
{
username: this.state.mobile,
password: "123"
},
function(err) {
if (err) {
console.log("err", err);
} else {
console.log("account created");
that.setState({
redirect: true
});
return <Redirect to="/" />;
}
}
);
}