0

有一个网站,前面是ReactJS写的。为了CEO的正确操作,使用了SSR。算法是这样的:

1 页加载

  1. 浏览器打开/foo;
  2. SSR 检查是否在缓存中 /foo 没有找到它;
  3. SSR 在服务器上渲染并根据 request / foo 执行 react 应用程序;
  4. SSR 放入缓存 HTML,结果是渲染过程 / foo 的结果;
  5. SSR 给浏览器一个 HTMLL,它是渲染过程 / foo 的结果;
  6. 浏览器执行异步请求,这些请求是 HTML,是 /foo 渲染的结果(CSS、JS、favicon ...);
  7. 加载的应用程序反应“理解页面已经被绘制并且没有必要执行路由等”;
  8. react 处理用户的进一步操作(如在常规 SPA 中)。

后续更新

  1. 浏览器打开/foo;
  2. SSR 检查是否在缓存中 /foo 没有找到它;
  3. SSR 在服务器上渲染并根据 request / foo 执行 react 应用程序;
  4. SSR 放入缓存 HTML,结果是渲染过程 / foo 的结果;
  5. 给浏览器一个 HTMLL,它是渲染过程 / foo 的结果;
  6. 浏览器执行异步请求,这些请求是 HTML,是 /foo 渲染的结果(CSS、JS、favicon ...);
  7. 加载的应用程序反应“理解页面已经被绘制并且没有必要执行路由等”;

react 处理用户的进一步操作(如在常规 SPA 中)。问题就在前面,每次刷新页面,都会启动路由,重新绘制整个应用程序,从而出现“闪烁”,即第7点不起作用。

问题:是否可以在某个时刻停止此渲染?告诉路线现在不需要绘制它。也许有任何流行的解决方案?

4

1 回答 1

0

您可以使用生命周期方法 shouldComponentUpdate。您可以在方法中设置自己的逻辑,以便重新渲染或不重新渲染组件。shouldComponentUpdate 类方法可以在运行组件的重新渲染之前访问下一个道具和状态。在这里,您可以决定通过从此方法返回 false 来阻止重新渲染。如果返回 true,则组件重新渲染。

于 2020-04-24T21:28:04.613 回答