react 在某些低版本安卓手机浏览器白屏解决办法

4,204 阅读1分钟

开始学习react,简单写了一个demo,react-redux,createBrowserHistory,自己测试了一下,毕竟用一个新的工具,兼容性问题是很重要的,发现在一些低版本的安卓浏览器白屏,查了一下,原来是babel的问题

Babel默认只转换新的JavaScript句法,对于ES6的新API,如erator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise、Async,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码

对于react,是引用import React from 'react'里面的有些方法不兼容,解决方案大致分为两种

  • 使用core-js,优点是可以针对性的引入react本身不支持的属性,对于其在业务操作中需要的其他新的api,也需要针对性引入;优点是,这样生产包会小很多

1.下载core-js,即可解决

$ npm install core-js

2.在入口js文件引入

import  'core-js/fn/Map';
import  'core-js/fn/set';
or:
import 'core-js/es/Map';
import 'core-js/es/set';
  • 使用babel-polyfill,缺点就是包本身太大;优点是可以为当前环境提供一个垫片,几乎可以兼容所有的浏览器

1.下载babel-polyfill

$ npm install --save babel-polyfill

2.在入口js文件最上面引入

import 'babel-polyfill'

两种方法,按照上面步骤再次执行完后运行就可以了

提示:如果只是纯粹的想解决react本身包的兼容问题,提倡使用第一种方法