我在RR3的服务器端渲染方面做了很多工作,所以我想看看它在v4的上下文中是如何工作的。我遵循了网站上的教程,但由于渲染现在与路由匹配一起进行,因此无法像以前那样实现预取数据。
以下是我过去如何使用v3进行服务器渲染:https://github.com/alexnm/react-seed/blob/master/server/index.js
基于match函数,我会调用所有组件树中的所有预取函数,然后用Promise.all
等待它们完成,然后触发renderToString
函数并返回html。
在RR4中,我们只有<ServerRouter>
组件,因此我提供的当前解决方案是复制渲染代码:https://github.com/FortechRomania/react-redux-complete-example/blob/master/src/server/index.js
我还在<Match>
标签上使用render
函数来触发预取操作。它很难看,并且在我想要用预取数据呈现的页面的父组件中引入了各种依赖关系。
我在这里错过了什么?有人为这种情况找到了更好的解决方案吗?我还没有发现有用的东西。
新的RR4文档有一个工作示例:https://reacttraining.com/react-router/web/guides/server-rendering/data-loading