我正在开发中,我检查,如果用户不是一个应用程序loggedIn我都显示登录表单,否则dispatch一个action将改变路线和加载其他组件.这是我的代码:
render() {
if (isLoggedIn) {
// dispatch an action to change the route
}
// return login component
<Login />
}
Run Code Online (Sandbox Code Playgroud)
我怎么能实现这一点,因为我无法改变渲染功能内的状态.
在路由器做出反应,我必须要和的onClick属性,如下图所示
<li key={i}><Link to="/about" onClick={() => props.selectName(name)}>{name}</Link></li>
state = {
selectedName: ''
};
selectName = (name) => {
setTimeout(function(){this.setState({selectedName:name});}.bind(this),1000);
// this.setState({selectedName: name});
}
Run Code Online (Sandbox Code Playgroud)
当我给出超时内部函数调用点击时,它导航到新页面并且在某个时间状态得到更新后导致显示以前的名称,直到状态用新名称更新.
有没有办法只有在onClick函数中的代码执行后才能导航到新路由.
您可以[这里]获取整个代码.(https://github.com/pushkalb123/basic-react-router/blob/master/src/App.js)
是否可以在异步函数中使用event.preventDefault?
我不确定因为必须同步调用event.preventDefault并且异步函数返回promises.
self.oncontextmenu = async function(event) {
event.preventDefault()
//await whatever
}
Run Code Online (Sandbox Code Playgroud)