React从部署的战争中使用合并的路线(包括参数)刷新页面

时间:2020-08-16 11:09:14

标签: reactjs react-router

我的主页上有这样一条路线:

<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组件吗?

1 个答案:

答案 0 :(得分:1)

我相信这是由于客户端路由的性质所致。例如,当您部署网站并尝试在加载首页之前转到特定路径时,您会得到一个空白页面,因为如果不转到首页,您的网站将无法获取呈现其余网站路径所需的所有JavaScript。 。这可以通过将您的react应用程序与快速服务器一起提供来解决,并且快速地,对于每条路由,您总是将index.html发送到build文件夹中,以便页面将加载所需的所有js文件。