React服务器端渲染在前端重新渲染?

3
在这个同构的例子中,https://github.com/DavidWells/isomorphic-react-example他通过禁用Javascript来展示服务器端渲染。但是如果在前端启用了Javascript,它会再次被渲染吗?
我进行了一个小测试,在render函数中放置了一个console.log,它既在NodeJS控制台中记录,也在浏览器的控制台中记录。
React是否足够智能,不会在HTML来自服务器时重新渲染?
1个回答

6

它将再次呈现,因为所有的React组件render函数将再次运行。然而,它不一定会改变DOM,因为React的差异算法只有在正确的DOM节点已经在页面中时才会执行任何操作。


但它会再次调用所有的Ajax。这很糟糕,我该如何停止重新渲染,至少在生产环境中? - sapy
1
我猜测在服务器端你并不会进行“ajax”调用,而是将初始状态传递到你的React组件中。如果你依赖于这些组件发起请求,那么这些请求可能不会在服务器上执行,因此初始渲染将不会携带数据,然后才会进行ajax请求。最终,你可以根据属性或状态是否具有值来有条件地进行ajax请求。 - Tyler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接