我正在尝试使用Django,Express,React和React Router Dom实现服务器端渲染。
server.js
"AppRoute使用RouteAsync作为客户端,使用RouteSync作为服务器。
webpack的NormalModuleReplacementPlugin插件将RouteSync更改为RouteAsync。
服务器渲染完成并发送给客户端。在客户端,当使用开发工具性能查看时,SSR客户端再次重新渲染整个页面。 开发工具“性能”图像显示客户端重新渲染前的空白页面 我希望React只是挂接事件监听器,而不是重新渲染页面。
有什么建议可以阻止客户端重新渲染。
server.js
const html = renderToString((
<Provider store={store}>
<StaticRouter basename={baseUrl} location={location} context={context}>
<AppRoute />
</StaticRouter>
</Provider>
), null, 2);
const preloadedState = store.getState();
res.send(renderFullPage(html, preloadedState))
客户端的index.js
ReactDOM.render(
<Provider store={store}>
<Router>
<AppRoute />
</Router>
</Provider>,
document.getElementById('app')
);
"AppRoute使用RouteAsync作为客户端,使用RouteSync作为服务器。
AppRoute.js导入
"import {App} from './RouteSync'
import {CollegeList} from './RouteSync'
import {CollegeDetail} from './RouteSync'
RouteAsync.js
export const App = asyncRoute(() => System.import('../app'));
export const CollegeList = asyncRoute(() => System.import('../apps/college/CollegeList'));
export const CollegeDetail = asyncRoute(() => System.import('../apps/college/CollegeDetail'));
RouteSync.js
export { default as App } from '../app'
export { default as CollegeList } from '../apps/college/CollegeList'
export { default as CollegeDetail } from '../apps/college/CollegeDetail'
webpack的NormalModuleReplacementPlugin插件将RouteSync更改为RouteAsync。
new webpack.NormalModuleReplacementPlugin(
/\.\/RouteSync$/,
'./RouteAsync'
),
服务器渲染完成并发送给客户端。在客户端,当使用开发工具性能查看时,SSR客户端再次重新渲染整个页面。 开发工具“性能”图像显示客户端重新渲染前的空白页面 我希望React只是挂接事件监听器,而不是重新渲染页面。
有什么建议可以阻止客户端重新渲染。