我们已经熟悉React 服务端渲染(SSR)的基本步骤,现在让我们更进一步利用 React RouterV4 实现客户端和服务端的同构。毕竟大多数的应用都需要用到web前端路由器,所以要让SSR能够正常的运行,了解路由器的设置是十分有必要的
基本步骤
路由器配置
前言已经简单的介绍了React SSR,首先我们需要添加ReactRouter4到我们的项目中
$ yarn add react-router-dom # or, using npm $ npm install react-router-dom
接着我们会描述一个简单的场景,其中组件是静态的且不需要去获取外部数据。我们会在这个基础之上去了解如何完成取到数据的服务端渲染。
在客户端,我们只需像以前一样将我们的的App组件通过ReactRouter的BrowserRouter来包起来。
src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import App from './App';
ReactDOM.hydrate(
,
document.getElementById('root')
);
在服务端我们将采取类似的方式,但是改为使用无状态的 StaticRouter
server/index.js
app.get('}
{renderRoutes(Routes)}
);
};
译者注
- SSR服务端React组件的生命周期不会运行到componentDidMount,componentDidMount只有在客户端才会运行。
- React16不再推荐使用componentWillMount方法,应使用constructor来代替。
- staticContext的实现应该跟redux的高阶组件connect类似,也是通过包装一层react控件来实现子组件的属性传递。
- 文章只是对SSR做了一个入门的介绍,如Loadable和样式的处理在文章中没有介绍,但这两点对于SSR来说很重要,以后找机会写一篇相关的博文
原文地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



