前言
本文旨在對React中引用Antd組件時肚吏,針對IE瀏覽器的兼容岳链。
方法1 下載polyfill文件并由html文件引入
1)下載或者直接引用polyfill文件:https://cdn.bootcss.com/babel-polyfill/6.23.0/polyfill.min.js
2)將該文件放到跟html模板(此處為index.html)同目錄下
3)html模板里面寫加載該腳本文件的<script>標(biāo)簽
方法2 引入babel-polyfill
1) 使用npm/yarn命令安裝依賴包:babel-polyfill:
yarn -D add babel-polyfill
2)有兩種方式,一種是在webpack中的入口(entry)處配置,這樣可以使babel-polyfill與編碼文件分離,起到全局的作用。而第二種方式則是直接在代碼文件中添加引入辜窑。
2-1)方式一,在webpack.config.js中配置:
//webpack.config.js
module.exports={
mode: 'development',
devtool: 'eval-source-map',
entry: ['babel-polyfill', path.resolve(base,'app/main.js')], //主要是添加'babel-polyfill'到入口處
//下面的配置在此處省略
}
2-2)方式二寨躁,直接在編碼文件中引入(跟引入其他包是一樣的):
//其他依賴包...
import('babel-polyfill');
class MyComponent extends Component{
//...
}
兼容IE過程遇到的坑
1) IE瀏覽器可能存在緩存導(dǎo)致發(fā)出的請求后無法及時更新數(shù)據(jù)的問題穆碎,這時候只需要在發(fā)出的請求中設(shè)置不使用緩存即可,比如React中的Axios.get:
Axios.get(url,{
"headers":{
"pragma": "no-cache"
}
}).then((response)=>{
//...
})
2) 也可以使用moment.js职恳,生成一個時間戳所禀,來阻止ie瀏覽器的緩存,例如:
const url = `/hello?timestamp=${moment().valueof()}`
Axios.get(url).then(res=>{
//...
});
附錄
方法1中放钦,index.html加載'polyfill.min.js'完整示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<div id="root"></div>
<script src='polyfill.min.js'></script>
</body>
</html>