我的主页上有这样一条路线:
<Route exact path="/editProject/:project/:type/:fabConfig" render={(props)=>
<ProjectEditor project={props.match.params.project}
fabConfig={props.match.params.fabConfig}
history= {this.props.history}/>
} />
URL与一些参数结合在一起,例如:项目名称,项目类型等。 在开发模式下,并手动刷新到具有此类url的页面时,它可以按预期工作。
但是当在战争中(在tomcat上)部署构建工件时,并做同样的事情得到一个空页面。
是否可以在不阻止浏览器的“刷新\后退”按钮的情况下进行处理?
我尝试切换方法并仅将简单的URL与“ / editProject”一起使用。 关于通过发出事件发送参数的参数:
async openProjectEditor() {
// EventsDispatcher.openProject(this.props.project.Name, this.props.project.Type, this.confDefaultValue)
// this.props.history.push('/editProject/')
await this.emitOpenProject()
this.props.history.push('/editProject/')
}
emitOpenProject () {
return new Promise(() => {
EventsDispatcher.openProject(this.props.project.Name, this.props.project.Type, this.confDefaultValue)
})
}
但是我从未到达await this.emitOpenProject()
之后的那一行!
当我重定向到EditProject组件时,我伸手将其实现为异步原因,因为它没有到达事件方法,因此尽管它可能与发射尚未完成这一事实有关。
我什至尝试实现Promisify eventEmitter,但根本没有达到“ then”子句!
可能是什么原因?尚未加载EditProject组件吗?
答案 0 :(得分:1)
我相信这是由于客户端路由的性质所致。例如,当您部署网站并尝试在加载首页之前转到特定路径时,您会得到一个空白页面,因为如果不转到首页,您的网站将无法获取呈现其余网站路径所需的所有JavaScript。 。这可以通过将您的react应用程序与快速服务器一起提供来解决,并且快速地,对于每条路由,您总是将index.html发送到build文件夹中,以便页面将加载所需的所有js文件。