【问题标题】:React Server Side rendering is rerendered in frontend?React 服务器端渲染在前端重新渲染?
【发布时间】:2015-05-07 01:54:59
【问题描述】:

在这个同构示例https://github.com/DavidWells/isomorphic-react-example 中,他通过禁用Javascript 来显示服务器端渲染。但是如果前端启用了javascript,是否会再次渲染?

我做了一个小测试,将 console.log 放在渲染函数中,它记录在 NodeJS 控制台和浏览器的控制台中。

如果 HTML 来自服务器,react 是否足够智能以不重新呈现?

【问题讨论】:

    标签: javascript node.js reactjs serverside-javascript


    【解决方案1】:

    它将再次渲染,因为所有 React 组件 render 函数都将再次运行。但是,它不一定会改变 DOM,因为如果页面中已经存在正确的 DOM 节点,React 的差异算法将不会做任何事情。

    【讨论】:

    • 但它再次调用了所有的 Ajax。哪个不好,我怎么能停止重新渲染,至少在生产中
    • 我猜服务器端你没有进行“ajax”调用,而是将初始状态传递给你的反应组件。如果您依赖组件发出请求,那么这些请求可能不会在服务器上触发,并且初始渲染将在没有数据的情况下执行此操作,然后发出 ajax 请求。最终,您可以使 ajax 请求以属性或状态是否具有值为条件。