javascript - 如何让 React-Router 呈现服务器的交互式输出?

标签 javascript node.js express reactjs react-router

我正在尝试使用 react-routerexpress.js。我的最终目标是:

  • 当 URL 到达服务器时,它将使用服务器端呈现来呈现输出。
  • 一旦进入客户端,以后点击 Link 组件将导致 react-router 在客户端呈现(无需与服务器进行完整的往返).

到目前为止我得到了什么:

  • 使服务器渲染像this .
  • 当我在客户端上呈现时,使 Link 组件正常工作。

我的问题:

  • 一旦我在服务器上呈现,输出就不是交互式的。我的意思是,没有事件处理程序与 DOM 关联。这是可以理解的。不过,我正在寻找的是一种混合服务器和客户端呈现的方法。我的意思是,服务器呈现输出,但它以某种方式在客户端中进行交互。如果我得到这个,我将能够在客户端上使用 Link,这将满足我的需求。

最佳答案

如果您在客户端调用 React.render(component, element),其中 element 指向包含服务器呈现的 React 标记和 的 DOM Node component 使用与服务器上相同的 props 实例化(并假设 props/state 一直匹配),React 将透明地将您的静态标记升级为交互式 React 应用程序。

参见 this JSFiddle example演示了这种技术:http://jsfiddle.net/BinaryMuse/ddvdppeg/ (请注意,在标记升级为交互式应用程序之前有 1 秒的延迟,但仅用于演示目的)。

关于javascript - 如何让 React-Router 呈现服务器的交互式输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909006/

相关文章:

javascript - 为什么在创建新文本区域后重置我的值?

node.js - RethinkDB 条件连接

mysql - Sequelize TypeError build.save 不是函数

javascript - 使用 multer 上传 Angular 5 图像不上传文件

javascript - JQuery 将一个函数返回给一个变量

javascript - 如何使用 Angular JS 重新渲染 View

javascript - Google Apps 脚本中的 RegExMatch 等效项是什么?

javascript - 如何将此数据更改为 javascript 对象?

html - 如何在 node.JS 中使用 phantomJs 将 html 内容呈现为 pdf 文件

mongodb - Node 和 Mongoose - 如果首次尝试连接时 mongod 未运行,则不会重新连接