routerContext对象上不存在url这个属性值

来源:3-7 服务端渲染优化

小王子抓猫咪

2017-12-18

<Switch>
<Route path="/" exact render={()=>(<Redirect to="/list" />)}/>
<Route path="/list" component={TopicList} />
<Route path="/detail" component={TopicDetail} />
<Route path="/test" component={ApiTest} />
{/*<Redirect to="/list" />*/}
</Switch>

上面是我的router路由设定规则

下面是我得server服务端渲染代码

      const routerContext = {};
      const serverApp = serverBundle(createStoreMap(), routerContext, req.url);
      const content = ReactSSR.renderToString(serverApp);
      // 当渲染结束之后通过检查routerContext对象是否具有url属性来判断是否是路由跳转
      if(routerContext.url){
        // eslint-disable-next-line
        console.log(`routerContext.url = ${routerContext.url}`);
        res.status(302).setHeader("Location", routerContext.url);
        res.end();
        return;
}
      res.send(content.replace("<!--app-->", content));

当我访问/根路径时并没有在routercontext对象上添加url 所以中间这段302跳转并没有执行


有没有和我遇到一样问题的小伙伴?

写回答

1回答

小王子抓猫咪

提问者

2017-12-18

我的代码在github上的地址

https://github.com/joyjoe/learn-react-server-render

哪位好心人帮忙看看

0
0

React全栈+服务器渲染(ssr)打造社区Webapp

【毕设面试】只会写业务代码?out了,带你学会搭建属于自己的工程!

768 学习 · 414 问题

查看课程