我正在开发一个应用程序,我在其中检查用户是否不是 loggedIn
。我必须显示登录表单,否则 dispatch
一个 action
将更改路由并加载其他组件。这是我的代码:
render() {
if (isLoggedIn) {
// dispatch an action to change the route
}
// return login component
<Login />
}
我如何实现这一点,因为我无法更改 render
函数内的状态。
原文由 Gaurav Mehta 发布,翻译遵循 CC BY-SA 4.0 许可协议
考虑到您正在使用
react-router v4
将你的组件与
withRouter
一起使用,并使用history.push
从道具来改变路线。您需要使用withRouter
只有当您的组件没有收到Router
道具时,这可能发生在您的组件是路由器呈现的组件的嵌套子组件的情况下您还没有将 Router props 传递给它,或者当组件根本没有链接到 Router 并且呈现为与 Routes 分开的单独组件时。class App extends React.Component { … render() { if(isLoggedIn) { return
}
// return login component
return
}
}
class App extends React.Component { … render() { if (isLoggedIn) { // dispatch an action to change the route this.context.router.push(‘/home’); } // return login component return
}
}
App.contextTypes = { router: React.PropTypes.object.isRequired } export default App;
import { browserHistory } from ‘react-router’; browserHistory.push(‘/some/path’);
”`