兼容性

语言补丁

  1. <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>

更换核心库

核心库应该由dist/React.js改成dist/ReactIE.js

它只是在React.js上添加了一些特殊事件的兼容补丁与innerHTML的修复处理。

IE事件补丁是针对一些不冒泡事件的修复(input, change, submit, focus, blur),及一些特定事件属性的处理(鼠标事件的pageX, pageY, 键盘事件的which, 滚轮事件的wheelDetla)

http://www.cnblogs.com/rubylouvre/p/5080464.html

动画

如果用户用到react-transition-group这样的动画库,请注意引入requestAnimationFrame的补丁

https://github.com/darius/requestAnimationFrame

压缩

如果你用到压缩,就需要处理 uglify-js产生问题,因为IE6-8 ,对于map.delete("ddd"), modulex.default这样的写法会报语法错误因为关键字不能做属性名与方法名。我们可以用es3ify-webpack-plugines3ify-loader进行处理。

  1. //npm install uglifyjs-webpack-plugin@1.0.0-beta.2
  2. //UglifyJs3
  3. new UglifyJsPlugin({
  4. parallel: {
  5. cache: true,
  6. workers: 4,
  7. },
  8. uglifyOptions: {
  9. mangle: {
  10. eval: true,
  11. toplevel: true,
  12. },
  13. parse: {
  14. html5_comments: false,
  15. },
  16. output: {
  17. comments: false,
  18. ascii_only: true,
  19. beautify: false,
  20. },
  21. ecma: 5,
  22. ie8: false,
  23. compresqs: {
  24. properties: true,
  25. unsafe: true,
  26. unsafe_comps: true,
  27. unsafe_math: true,
  28. unsafe_proto: true,
  29. unsafe_regexp: true,
  30. unsafe_Func: true,
  31. dead_code: true,
  32. unused: true,
  33. conditionals: true,
  34. keep_fargs: false,
  35. drop_console: true,
  36. drop_debugger: true,
  37. reduce_vars: true,
  38. if_return: true,
  39. comparisons: true,
  40. evaluate: true,
  41. booleans: true,
  42. typeofs: false,
  43. loops: true,
  44. toplevel: true,
  45. top_retain: true,
  46. hoist_funs: true,
  47. hoist_vars: true,
  48. inline: true,
  49. join_vars: true,
  50. cascade: true,
  51. collapse_vars: true,
  52. reduce_vars: true,
  53. negate_iife: true,
  54. pure_getters: true,
  55. pure_funcs: true,
  56. // arrows: true,
  57. passes: 3,
  58. ecma: 5,
  59. },
  60. },
  61. sourceMap: false,
  62. }),

React.createClass

React15使用createClass来创建类,如果需要这个API,可以在babel中引入 anujs/lib/createClass.js