reactjs - 在重定向外部 JS 在 react-router-dom 中不起作用
问题描述
我正在使用 react.js 和 Node.js 创建一个应用程序,并使用 react-router-dom 4 进行前端路由。
我正在使用 jquery 进行 AJAX 请求。有用户登录 api,当用户使用凭据登录然后使用重定向到仪表板页面this.props.history.push('/dashboard')
UserLoginAPI(){
let formData = this.state.form;
$.ajax({
url:BASEURL+CONSTANT.login,
type:'POST',
data:formData,
success:(data)=>{
let form = this.state.form;
this.setState({popUpMessage:data.data });
this.setState({showPopUp:true});
this.props.history.push('/dashboard')
},
error:(err)=>{
this.setState({popUpMessage:err.responseJSON.message || 'Some Undefined Error Occured.'});
this.setState({showPopUp:true}) ;
console.log(err);
}
});
}
成功登录后,用户重定向到仪表板页面,但其外部纯 JavaScript 无法正常工作。在 Page 中渲染可能存在一些问题。我陷入了困境。下面是路由配置
<Router>
<div className="App">
<Header />
<Slider />
<Switch>
<Route exact path='/' component={Home} />
<Route path='/register' component={Register} />
<Route path='/login' component={Login} />
<Route path='/dashboard' component={Dashboard} />
</Switch>
</div>
</Router>
我无法找出问题所在。请帮忙!
解决方案
你如何导入你的 UserLoginAPI ?也许您的示例代码还不够。如果函数在类范围内,则必须使用箭头函数来绑定类上下文,如果 API 的方法位于外部,则必须从方法返回 Promise() 并在组件中解析结果。
// In-class method
UserLoginAPI= () => {
let formData = this.state.form;
$.ajax({
url:BASEURL+CONSTANT.login,
type:'POST',
data:formData,
success:(data)=>{
let form = this.state.form;
this.setState({popUpMessage:data.data });
this.setState({showPopUp:true});
this.props.history.push('/dashboard')
},
error:(err)=>{
this.setState({popUpMessage:err.responseJSON.message || 'Some Undefined Error Occured.'});
this.setState({showPopUp:true}) ;
console.log(err);
}
});
}
// Return promise
MyFunction(myParams) {
return $.ajax({
url: myParams.url,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(expenseSet.toJSON())
});
}
推荐阅读
- scala - 从具有键值对的列中获取部分值并将其分配给 Spark Dataframe 中的新列
- java - 如何使用java删除包含字符串的单词表的行
- c# - 如何知道我是否单击了 CellMouseDownEvent 中的单元格
- html - 检查电子邮件签名上的更改
- sql - 在oracle sql中将一年中的一周转换为日期
- javascript - 为什么Javascript正确打印数组但是当我尝试在数组中指定一个明显存在的键时,它说它是未定义的?
- windows - Scala Play openapi 生成器项目缺少导入
- powershell - Powershell 2.0 参数绑定异常
- c# - 在 linq 查询中选择 max 或重写为方法链语法
- c - 我可以在 C 中使用 sigaction 的标志 siginfo 和 SIGCHLD 来获得终止进程的信号 int 常量(如 SIGINT 或 SIGKILL)吗?