如果需要判断当前使用的是否是 QReact,可以通过 React.eventSystem
或者 ReactDOM.eventSystem
来判断。由于官方没有提供该对象,所以只要该属性存在,就是 QReact。
QReact 使用了一部分 ES6 的 API,所以如果需要在旧版浏览器中运行的话,需要自行 polyfill
,通常的方法是在项目入口文件引入 babel-polyfill
或者在 ykit
、webpack
的打包配置中将 babel-polyfill
加入 entry
中。
如果项目中使用了 react-addons-css-transition-group
,请使用 react-transition-group/CSSTransitionGroup
代替(React v15 请使用 v1 版本,React v16 请使用 v2 版本),因为 react-addons-css-transition-group
是直接导出的 react/lib/ReactCSSTransitionGroup
,而 QReact 并没有提供这个文件,所以需要使用 react-transition-group/CSSTransitionGroup
替换掉。实际上新版 React 也不再提供这个文件了。
如果在项目中用到了 requestAnimationFrame
,需要引入 request-animation-frame-polyfill
,否则会报错。
请仔细阅读配置中的别名说明,比如 yo
项目请务必加上 react-tap-event-plugin
的别名。
如果在 yo
项目中用到了 ykit
的 dll
,则需要将 ykit-config-yo
升级至 3.7.0 或以上版本,在此之前的版本若将 React 替换 为 QReact 会出现找不到 React 的错误。
如果项目使用了 yo-router
,则请务必使用 1.2.1 及以上版本,在此之前的版本可能会出现错误。
如果项目使用了 ykit 的 dll 功能,则在从 React 切换至 QReact 之后请务必先执行一次 ykit dll
并重启 ykit server
,否则 ykit 的 dll 中保留的还是官方的 React,会导致错误。
如果需要在 IE 8 下支持 webpack 的 hot reload 功能,需要在 script
标签中于所有 webpack 代码之前引入 es5-shim
和 es5-sham
,因为 webpack 的 hot reload 使用了 ES5 的一些特性,需要提前 polyfill。
调试建议:由于 IE 8 及以下浏览器性能很差,如果有很多的日志输出的话,浏览器很容易卡死,因此建议限制一下日志输出的数量,可以通过劫持 console.log
的方式来限制日志的数量。