最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ReactJS?應(yīng)用兼容ios9對(duì)標(biāo)ie11解決方案

 更新時(shí)間:2023年01月08日 15:35:05   作者:菜菜真的不知道  
這篇文章主要為大家介紹了ReactJS?應(yīng)用兼容ios9對(duì)標(biāo)ie11解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

最近遇到了一個(gè)比較棘手的問(wèn)題,客戶要求我們的react應(yīng)用ios9上運(yùn)行,我們的應(yīng)用在ios9上是白屏顯示,所以需要做一些兼容。

遇到問(wèn)題

遇到問(wèn)題之后有一個(gè)更大的問(wèn)題就是手上沒(méi)有ios9的機(jī)器,畢竟這個(gè)太他娘的古老了,我就去搜了一下ios9的出現(xiàn)時(shí)間,根據(jù)百度可知蘋(píng)果IOS9將于2015年9月16日正式向用戶推送,但是同時(shí)可以知道ie11于2013年10月17日隨Windows 8.1發(fā)行,所以(我猜的)只要能夠兼容ie11,那么兼容ios9應(yīng)該就問(wèn)題不大了,而且目前已知的解決兼容ie的方案比較多,沒(méi)找到啥兼容ios的方案,就先從ie入手。

解決方案

已知react兼容ie可以使用babel,實(shí)際上項(xiàng)目里面已經(jīng)用了babel,只不過(guò)沒(méi)有兼容ie11。

初始配置

{
    // react 版本
    "react": "^16.13.1",
    "react-dev-utils": "^10.2.1",
    "react-dom": "^16.13.1",
    "react-redux": "^7.2.0",
    "react-rnd": "^10.2.2",
    "react-router-dom": "^5.2.0",
    "redux": "^4.0.5",
    // babel 版本
    "@babel/core": "7.9.0",
    "babel-eslint": "10.1.0",
    "babel-jest": "^24.9.0",
    "babel-loader": "8.1.0",
    "babel-plugin-import": "^1.13.5",
    "babel-plugin-named-asset-import": "^0.3.6",
    "babel-preset-react-app": "^9.1.2",
    // browserslist
    "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  // babel config
  "babel": {
  "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd-mobile",
          "style": "css"
        }
      ]
    ]
  }
}

ie的報(bào)錯(cuò)顯示是

image.png

安裝@babel/preset-env

在語(yǔ)法正確的情況下遇到語(yǔ)法錯(cuò)誤/缺少標(biāo)識(shí)符的報(bào)錯(cuò)很大概率可能是es6+語(yǔ)法沒(méi)有被編譯成es5的語(yǔ)法,查看打包后的文件存在大量的const/let/解構(gòu)等沒(méi)有被編譯。

SCRIPT1002: 語(yǔ)法錯(cuò)誤

SCRIPT1010: 缺少標(biāo)識(shí)符

image.png

  • 安裝 @babel/preset-env 和 babel-polyfill
yarn add @babel/preset-env babel-polyfill --save-dev
  • 配置babel(我的babel是寫(xiě)在packjson里面的)
// index.tsx 頂部引入
import 'babel-polyfill';
// presets 添加 @babel/preset-env ,target 配置 "ie > 9"
"babel": {
  "presets": [
    "react-app",
    [
      "@babel/preset-env",
      {
        "targets": {
          "ie": 9
        }
      }
    ]
  ],
  "plugins": [
    [
      "import",
      {
        "libraryName": "antd-mobile",
        "style": "css"
      }
    ]
  ]
}
  • 配置 browserslist,修改到ie>=9
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all",
      "ie >= 9"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version",
      "ie >= 9"
    ]
  },

安裝 @babel/plugin-proposal-decorators 和 @babel/plugin-proposal-class-properties

其實(shí)配置完@babel/preset-env應(yīng)該就可以了,但是項(xiàng)目里面使用了裝飾器和類(lèi),所以還是報(bào)錯(cuò):

SyntaxError: xxx.ts: Decorators are not enabled.
If you are using ["@babel/plugin-proposal-decorators", { "version": "legacy" }], make sure it comes *before* "@babel/plugin-proposal-class-properties" and enable loose mode, like so:
        ["@babel/plugin-proposal-decorators", { "version": "legacy" }]
        ["@babel/plugin-proposal-class-properties", { "loose": true }]
  27 | }
  28 | 
> 29 | @StoreConfig({ name: "auth", resettable: true })
     | ^
  30 | export class AuthStore extends Store<Auth> {
  31 |   constructor() {
  32 |     super(createInitialState());

image.png按照提示安裝 @babel/plugin-proposal-decorators@babel/plugin-proposal-class-properties。(ps:使用yarn安裝,因?yàn)轫?xiàng)目使用的是node sass,所以node版本是14.16,對(duì)應(yīng)的npm是6,安不上這兩個(gè)插件。)

  • 安裝 @babel/plugin-proposal-decorators@babel/plugin-proposal-class-properties
yarn add @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties --save-dev
  • 按照?qǐng)?bào)錯(cuò)提示新增babel配置
"babel": {
  "presets": [
    "react-app",
    [
      "@babel/preset-env",
      {
        "targets": {
          "ie": 9
        }
      }
    ]
  ],
  "plugins": [
    [
      "@babel/plugin-proposal-decorators",
      {
        "legacy": true
      }
    ],
    [
      "@babel/plugin-proposal-class-properties",
      {
        "loose": true
      }
    ],
    [
      "import",
      {
        "libraryName": "antd-mobile",
        "style": "css"
      }
    ]
  ]
}

安裝promise

其實(shí)到上面一步已經(jīng)差不多了,如果還報(bào)Promise undefined,可以單獨(dú)引入Promise掛載到windeow上。

結(jié)語(yǔ)

雖然就是幾個(gè)配置的問(wèn)題但是真的搞了好長(zhǎng)時(shí)間,大概弄了有兩天這樣,配置項(xiàng)真的太痛了,希望下次不要再去配了。

以上就是ReactJS 應(yīng)用兼容ios9對(duì)標(biāo)ie11解決方案的詳細(xì)內(nèi)容,更多關(guān)于ReactJS兼容ios9對(duì)標(biāo)ie11的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React中父子組件通信詳解

    React中父子組件通信詳解

    這篇文章主要介紹了React中父子組件通信詳解,在父組件中,為子組件添加屬性數(shù)據(jù),即可實(shí)現(xiàn)父組件向子組件通信,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • React useContext與useReducer函數(shù)組件使用

    React useContext與useReducer函數(shù)組件使用

    useContext和useReducer 可以用來(lái)減少層級(jí)使用, useContext,可以理解為供貨商提供一個(gè)公共的共享值,然后下面的消費(fèi)者去接受共享值,只有一個(gè)供貨商,而有多個(gè)消費(fèi)者,可以達(dá)到共享的狀態(tài)改變的目的
    2023-02-02
  • 在react項(xiàng)目中webpack使用mock數(shù)據(jù)的操作方法

    在react項(xiàng)目中webpack使用mock數(shù)據(jù)的操作方法

    這篇文章主要介紹了在react項(xiàng)目中webpack使用mock數(shù)據(jù)的操作方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 在React中如何優(yōu)雅的處理事件響應(yīng)詳解

    在React中如何優(yōu)雅的處理事件響應(yīng)詳解

    這篇文章主要給大家介紹了關(guān)于在React中如何優(yōu)雅處理事件響應(yīng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • React進(jìn)階學(xué)習(xí)之組件的解耦之道

    React進(jìn)階學(xué)習(xí)之組件的解耦之道

    這篇文章主要給大家介紹了關(guān)于React進(jìn)階之組件的解耦之道,文中通過(guò)詳細(xì)的示例代碼給大家介紹了組件分割與解耦的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • React實(shí)現(xiàn)響應(yīng)式布局的最佳實(shí)踐

    React實(shí)現(xiàn)響應(yīng)式布局的最佳實(shí)踐

    在當(dāng)今的前端開(kāi)發(fā)中,響應(yīng)式設(shè)計(jì)已經(jīng)成為必不可少的部分,隨著各種設(shè)備的出現(xiàn),確保我們的網(wǎng)頁(yè)在不同屏幕尺寸上展示良好,已經(jīng)成為開(kāi)發(fā)者的首要任務(wù)之一,本文將介紹如何在React中實(shí)現(xiàn)響應(yīng)式布局,提供一些最佳實(shí)踐和示例代碼,幫助大家更好地理解這一概念
    2025-02-02
  • 詳解react-router 4.0 下服務(wù)器如何配合BrowserRouter

    詳解react-router 4.0 下服務(wù)器如何配合BrowserRouter

    這篇文章主要介紹了詳解react-router 4.0 下服務(wù)器如何配合BrowserRouter,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • React?component.forceUpdate()強(qiáng)制重新渲染方式

    React?component.forceUpdate()強(qiáng)制重新渲染方式

    這篇文章主要介紹了React?component.forceUpdate()強(qiáng)制重新渲染方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • React狀態(tài)管理器Rematch的使用詳解

    React狀態(tài)管理器Rematch的使用詳解

    rematch是對(duì)redux的二次封裝,簡(jiǎn)化了redux是使用,極大的提高了開(kāi)發(fā)體驗(yàn),這篇文章主要介紹了React狀態(tài)管理器Rematch的使用,需要的朋友可以參考下
    2022-09-09
  • react16.8.0以上MobX在hook中的使用方法詳解

    react16.8.0以上MobX在hook中的使用方法詳解

    這篇文章主要為大家介紹了react16.8.0以上MobX在hook中的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論

兰坪| 衡南县| 即墨市| 普兰县| 广德县| 岱山县| 宜黄县| 丽水市| 曲沃县| 临潭县| 正定县| 拉孜县| 潮州市| 隆子县| 西华县| 怀仁县| 军事| 柞水县| 日喀则市| 色达县| 湖州市| 轮台县| 札达县| 泰州市| 新和县| 泸溪县| 阿尔山市| 华安县| 合水县| 仁化县| 崇文区| 仙桃市| 郎溪县| 湾仔区| 紫阳县| 漳浦县| 县级市| 江陵县| 嘉黎县| 大兴区| 永泰县|