React 实作笔记2

(6个月前的文章乱版了, 重新发布)

服务器端渲染(与客户端渲染共存)

更换为使用 react-engine,出发点是因为其支持一份路由(react-route)在两端共享

浏览器中提示 Invariant Violation时,指示的问题组件可能跑偏

遇到的具体情况是,说A组件在服务器端和客户端渲染的结果不一致,并且像模像样的给出了差异,能明显看出A在服务器端渲染时,checked="", 而在客户端为 checked

为此特意去看了 react-engine/lib/server的代码,并且打了日志,事实上服务端渲染也是 checked,并没有后面的=""。

后来想到另一个组件B,在修改时,对一个state在初始化时,尾部拼装了Date.now(),这还是容易想到会导致两端渲染不一致的。改好后,浏览器里也不报A的错误了!

使用了类似 arrow functions 这样的ES6 语法,需要加入相应的支持

  • node-jsx
require("node-jsx").install({extension:'.jsx',harmony:true});
  • reactify
var reactifyES6 = function(file) {
  return reactify(file, {'es6':true});
};

你可能感兴趣的:(React 实作笔记2)