ReactJS重新渲染/重绘服务器生成的视图

时间:2015-05-29 11:00:01

标签: php codeigniter reactjs

所以我有这个应用程序,让我们说它类似于Facebook在你的墙上张贴的东西,

所有内容都在PHP服务器/ Codeigniter框架上呈现并发送到客户端,我需要使用ReactJS呈现这些帖子,因为我在每个帖子中都有我喜欢做的很棒的事情

  1. 注释
  2. 编辑/报告
  3. 我不想使用V8JS,因为客户端无法使用php服务器,只需要使用php脚本来实现它,

    有什么想法我怎么能做这些家伙?非常感谢,

    可能有一个想法,

    将帖子加载为服务器呈现,然后执行GET请求并使用ReactJS再次呈现相同的帖子?那会有用吗?

    或者有没有办法将所有ReactJS函数和事件附加到服务器呈现的html页面?

1 个答案:

答案 0 :(得分:0)

对于客户端/ Web浏览器上的React附加到现有DOM结构(例如,呈现的服务器),它使用名为data-react-checksum的属性,该属性被添加到根DOM元素中。例如,调用React.renderComponentToString将包含此属性。

<div data-react-checksum="452232529">

当你在同一根元素上调用renderElement时,React会像正常调用render一样执行,等等。但是,在render周期结束时,data-react-checksum与本地计算的数据进行比较。如果值与DOM中已有的值(由服务器提供)匹配,则Virtual DOM将附加到现有DOM元素。但要做到这一点,正如我所提到的,它必须完全匹配。

此外,您还需要在通常与React的虚拟DOM关联的DOM元素中包含data-reactid属性。

如果您无法在Web服务器上执行React渲染管道,则应依赖于使用Ajax来获取数据。您可以通过PHP呈现整个页面,然后在客户端上获取数据并重新呈现页面。但是,您需要确定这对您的应用程序和用户是否有意义。

我建议您考虑将React用于网页的交互式部分,并根据需要在客户端上构建整个部分。