React JS同构渲染

k

ReactJS,原始Flux,react-router,nodeJS,socket.io一切都是最新的。

如果我要关闭浏览器中的javascript,则仅呈现静态代码。

在服务器端渲染ComponentWillMountrender方法启动期间,但不启动ComponentDidMount
即使我将Flux逻辑放入ComponentWillMount方法中,也不会发生任何事情:调用了操作,但是socket.io不会将请求发送到服务器以从数据库中获取数据。这意味着,不会从数据库中检索数据,也不会呈现对搜索引擎有用的数据。如果启用了javascript,则一切正常。

这里是重要的代码段:

成分。添加监听器和呼叫操作:

componentDidMount() {
    StoreUser.addChangeListener(this._onChange);
    Actions.getUser(this.props.params.userid)   
}

客户的行为要求服务器提供用户数据:

function _getUser (userid) {
  socket.emit('getUser', userid)
}

直到该位置服务器端渲染正常,但服务器本身未接收到getUser事件,因此没有任何进一步发生。同样,如果在浏览器中启用了javascript,则所有这些都可以正常工作。服务器收到此呼叫并返回用户的数据。

如何使服务器接收此事件,返回用户数据并在发送给客户端之前呈现它?作为替代方案,是否可能有其他方法使它对SEO友好?

成立

如docs所述, React的componentDidMount生命周期挂钩不称为服务器端

如果需要获取数据并在render组件方法中在服务器端使用它,则需要像props在初始渲染期间一样传递此数据这意味着,componentWillMount即使在调用该钩子的情况下,您也无法在其中获取它

要实现所需的功能,您需要服务器端代码来:

  • 确定将渲染哪些组件
  • 调度适当的操作,以便正确填充您的商店
  • 仅在那时渲染您的组件-因为数据可以在初始渲染中传递给您的组件

当然,有关如何实现的细节将取决于您的流量实现,您在服务器端使用的框架等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

没有通量的同构react.js

来自分类Dev

React + Flux和服务器端渲染?(同构React + Flux)

来自分类Dev

同构React.js和iso-http

来自分类Dev

React 中的 JS 渲染

来自分类Dev

是否可以从同构/通用应用程序的服务器端渲染react-toolbox?

来自分类Dev

React JS for渲染内部循环

来自分类Dev

React js 中的条件渲染

来自分类Dev

在同构React Web应用程序中选择性地服务器渲染的最佳方法是什么?

来自分类Dev

React JS - React Router - 单独渲染内容

来自分类Dev

带有KOA的React Router的同构React

来自分类Dev

react.js-在requestAnimationFrame上渲染

来自分类Dev

React JS组件在Meteor中多次渲染

来自分类Dev

React JS:从子对象渲染父组件

来自分类Dev

React.js:组件未渲染

来自分类Dev

在React.js中循环并渲染对象

来自分类Dev

React.js与Bootstrap 3渲染差异

来自分类Dev

React.js没有渲染?

来自分类Dev

在React JS中渲染惊人的图像

来自分类Dev

如何在React JS中渲染对象

来自分类Dev

React.Js条件渲染:代码说明

来自分类Dev

React.js如何重新渲染组件?

来自分类Dev

无法在React.js中渲染表

来自分类Dev

选择中的问题渲染项目(React js)

来自分类Dev

react.js中的状态渲染

来自分类Dev

React.js没有渲染?

来自分类Dev

使用 React.js 渲染 JSON

来自分类Dev

React js延迟渲染导致错误

来自分类Dev

在react js中渲染动态html

来自分类Dev

React.js 上的条件渲染