请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

服务器端和客户端渲染不同节点时报错的疑惑

课程4-1(约7分40秒)讲到:
“当客户端与服务器端渲染出了不同的html结构时,控制台会报同构的错误”。
不是很理解这个报错机制

如图:warning:Expected server HTML to contain a matching 《div》 in 《div》
图片描述

我的理解:

服务端渲染的html和客户端执行js后生成的html可以是天差地别的,后者只需找到挂载的root节点就可以了。
那为什么还要检查服务端html和客户端html之间的差异,为什么老师说一定要使得两者的结构保持一致?

问题:
我不是很理解这个报错机制,为什么一定要两端渲染的html必须保持一致?
请老师同学答疑解惑。

正在回答 回答被采纳积分+3

1回答

Dell 2018-11-30 00:13:04

不一致怎么让客户端接管服务器端渲染出的内容呢?

1 回复 有任何疑惑可以回复我~
  • 提问者 renderman #1
    DellLee老师你好:
    
    *问题1:
    
    可以讲讲“接管”时背后的检查原理吗,是哪个包的哪个方法去检查服务器端渲染的结构和客户端渲染的结构是否完全一致?
    从报错看,好像是react-dom。但它又是怎么知道我正在做同构这件事的呢?
    回复 有任何疑惑可以回复我~ 2018-12-01 10:48:25
  • 提问者 renderman #2
    *问题2:
    有没有场景,是需要服务器端和客户端的结构有所区别的呢?   
    我想到一个场景,服务器渲染的文档会被百度蜘蛛爬虫看到,而客户端渲染的文档不会。有时候为了seo需要,服务端渲染可以做这方面的优化,而客户端可以完全抛弃seo的包袱,一心一意为用户体验下功夫。这种需求到底对不对,我该如何设计此类同构组件和流程呢?
    回复 有任何疑惑可以回复我~ 2018-12-01 11:00:14
  • Dell 回复 提问者 renderman #3
    当你用reactDom.hydrate,他要分析你html 的结构和js结构是否一致,一致就直接复用,不一致要重新删除掉创建,所以当然需要你一致才能保证性能了。
    
    第二点是对的
    回复 有任何疑惑可以回复我~ 2018-12-02 00:50:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信