Javascript Action Creator中的history.push()将更改URL,但不会导航到页面
我有一个登录页面组件,我想在成功登录后从action creator(thunk)重定向。 它似乎可以工作,但当URL正确更改时,页面仍保留在登录页面上 在这里,我导入要在action creator中导入的历史:Javascript Action Creator中的history.push()将更改URL,但不会导航到页面,javascript,reactjs,react-redux,redux-thunk,browser-history,Javascript,Reactjs,React Redux,Redux Thunk,Browser History,我有一个登录页面组件,我想在成功登录后从action creator(thunk)重定向。 它似乎可以工作,但当URL正确更改时,页面仍保留在登录页面上 在这里,我导入要在action creator中导入的历史: //helpers/history.js 从“历史”导入{createBrowserHistory}; const history=createBrowserHistory(); 导出默认历史记录; 以下是操作创建者的简化版本: //操作/session.js 从“../helpe
//helpers/history.js
从“历史”导入{createBrowserHistory};
const history=createBrowserHistory();
导出默认历史记录;
以下是操作创建者的简化版本:
//操作/session.js
从“../helpers/history”导入历史记录;
导出常量登录=(formData)=>{
返回(发送)=>{
分派({type:LOGIN\u REQUEST})
返回取回(“http://localhost:3001/login", {
...
。然后((用户)=>{
历史记录。推送(“/live rewards”)
派遣({
类型:登录\请求\成功
})
})
.catch(错误=>{
...
这里是组件的缩短版本,以显示如何调用登录和导入
//containers/LoginForm.js
从“React”导入React,{Component}
从“react redux”导入{connect};
从“react router dom”导入{Link}
从“../actions/session”导入{login}
类LoginForm扩展组件{
...
fetchOnSubmit=(e)=>{
e、 预防默认值()
this.props.login(this.state)
}
...
const mapDispatchToProps=调度=>{
返回{
登录:(凭证)=>{
返回调度(登录(凭据))
}
}
}
导出默认连接(mapStateToProps、mapDispatchToProps)(LoginForm);
以下是browserRouter的实现方式:
//index.js
...
...
//app.js
...
...
我建议您完全抛弃此历史记录
对象,从浏览器路由器
上下文中的组件处理导航,而不是通过操作创建者
LoginForm
可以访问上下文历史记录
prop-through。它可以通过isLoggedIn
prop-throughMapStateTrops
访问状态中的凭据
LoginForm
的render()
方法将包括一个Redirect
组件,该组件根据isLoggedIn
属性有条件地呈现,该属性将在调度登录请求成功时更新
以某种方式从状态
映射到布尔值
propisLoggedIn
。示例:
const mapStateToProps = (state) => ({
isLoggedIn: !!state.credentials.token
})
条件渲染:
{this.props.isLoggedIn && <Redirect to="/live-rewards" />}
{this.props.isLoggedIn&&}
我更喜欢这种方法,因为这意味着如果用户已经登录,则根本无法加载登录页面