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

詳解React?Native中如何使用自定義的引用路徑

 更新時(shí)間:2022年10月12日 08:41:59   作者:前百花真君  
這篇文章主要為大家介紹了React?Native中如何使用自定義的引用路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

RN的相對(duì)路徑地獄

我剛接觸RN時(shí),就發(fā)現(xiàn)所有的demo中給出來(lái)的路徑都是相對(duì)路徑,我自己的練習(xí)項(xiàng)目中想改成自定義的絕對(duì)路徑,但是發(fā)現(xiàn)并沒有我做前端時(shí)熟悉的webpack.config.js,所以也就不知道該怎么改了。伴隨著RN的學(xué)習(xí)和開發(fā)練習(xí),我的代碼也變得越來(lái)越多,越來(lái)越復(fù)雜,我逐漸發(fā)現(xiàn)RN的相對(duì)路徑越來(lái)越麻煩,比如我把某個(gè)文件移動(dòng)到另一個(gè)不同深度的文件夾中,那么就需要把所有引用這個(gè)文件的地方都改一遍。請(qǐng)看下面這些例子,這些小點(diǎn)點(diǎn),晃得我眼暈。

import { deviceInfo } from '../../utilities/device'
...
import { API, DEV } from '../../../config/api'
...
import { Headers } from '../../widgets/nav'
...
import { basic } from '../../styles/theme'
...

RN的自定義路徑需要的依賴

作為前端開發(fā)時(shí)熟悉的webpack.config.js,在RN的腳手架中并沒有看到,但是要知道,webpack.config.js里用來(lái)自定義import路徑的resolve.alias最終目的也是讓babel在翻譯代碼時(shí),能夠找到正確的路徑。所以RN里想用自定義的引用路徑,還得靠babel的配置才行。

  • 安裝依賴babel-plugin-module-resolver
yarn add babel-plugin-module-resolver -D
  • 配置babel.config.js
plugins: [
    [
      require.resolve('babel-plugin-module-resolver'),
      {
        extensions: ['.js', '.jsx'],
        root: ['.'],
        alias: {
          utilities: './src/utilities',
          config: './src/config',          
          widgets: './src/widgets',
          styles: './src/styles'
        }
      },
    ],
  ]
  • 配置jsconfig.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "utilities": ["./src/utilities/*"],
      "config": ["./src/config/*"],
      "widgets": ["./src/widgets/*"],
      "styles": ["./src/styles/*"],
    }
  }
}

RN腳手架默認(rèn)的情況下,是沒有這個(gè)文件的,需要自己新建。

  • 把相對(duì)路徑都改成自定義引用
import { deviceInfo } from 'utilities/device'
...
import { API, DEV } from 'config/api'
...
import { Headers } from 'widgets/nav'
...
import { basic } from 'styles/theme'
...
  • 重啟
yarn start

此時(shí)我發(fā)現(xiàn),自定義的路徑并沒有起作用,Metro報(bào)錯(cuò)說(shuō)找不到路徑。因?yàn)槲业乃蠷eact組件的定義,都是以jsx為文件后綴的。我在項(xiàng)目里使用了eslint-plugin-react這個(gè)eslint插件,它的推薦規(guī)則就是要React的組件的文件后綴為jsx。當(dāng)我把文件后綴改成js后,代碼就能正常運(yùn)行了。

我覺得文件后綴為jsx的情況下,jsconfig.js也能通過(guò)某種方式起作用,可惜我現(xiàn)在還不知道。

解決自定義引用路徑導(dǎo)致的eslint報(bào)錯(cuò)問(wèn)題

如果你使用了eslint-plugin-react,那么當(dāng)你用js作為React組件的文件后綴時(shí),eslint會(huì)報(bào)錯(cuò)。為了解決自定義引用路徑問(wèn)題,我只能犧牲掉這條eslint的rule。在.eslintrc.js加上這一條rule,就可以解決掉它。

rules:[
    'react/jsx-filename-extension': ['error', { extensions: ['.js', '.jsx']}]
]

如果你使用了airbnb或者單獨(dú)引用了eslint-plugin-import,那么當(dāng)你利用babel-plugin-module-resolver成功解析了自定義引用路徑的同時(shí),eslint就會(huì)因?yàn)闊o(wú)法找到這些路徑而報(bào)錯(cuò)。因?yàn)樯婕暗秸麄€(gè)項(xiàng)目的所有文件,不可能在文件里簡(jiǎn)單的ignore某個(gè)rule來(lái)消除錯(cuò)誤,而是需要在.eslintrc.js里覆蓋eslint-plugin-import的import/no-unresolved這條rule才行。

rules:[
    'import/no-unresolved': [2, { ignore: ['^utilities', '^config', '^widgets', '^styles']}]
]

至此,解決了自定義引用路徑問(wèn)題,同時(shí)避免了eslint的報(bào)錯(cuò)。

以上就是詳解React Native中如何使用自定義的引用路徑的詳細(xì)內(nèi)容,更多關(guān)于React Native自定義引用路徑的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vite+React搭建開發(fā)構(gòu)建環(huán)境實(shí)踐記錄

    Vite+React搭建開發(fā)構(gòu)建環(huán)境實(shí)踐記錄

    這篇文章主要介紹了Vite+React搭建開發(fā)構(gòu)建環(huán)境實(shí)踐,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • React錯(cuò)誤的習(xí)慣用法分析詳解

    React錯(cuò)誤的習(xí)慣用法分析詳解

    這篇文章主要為大家介紹了React錯(cuò)誤用法習(xí)慣分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • react-router browserHistory刷新頁(yè)面404問(wèn)題解決方法

    react-router browserHistory刷新頁(yè)面404問(wèn)題解決方法

    本篇文章主要介紹了react-router browserHistory刷新頁(yè)面404問(wèn)題解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 基于useImperativeHandle的使用解析

    基于useImperativeHandle的使用解析

    這篇文章主要介紹了基于useImperativeHandle的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React Hooks使用常見的坑

    React Hooks使用常見的坑

    React Hooks 是 React 16.8 引入的新特性,允許我們?cè)诓皇褂?Class 的前提下使用 state 和其他特性。接下來(lái)通過(guò)本文給大家分享React Hooks使用避坑指南,一起學(xué)習(xí)下吧
    2021-06-06
  • React hooks如何清除定時(shí)器并驗(yàn)證效果

    React hooks如何清除定時(shí)器并驗(yàn)證效果

    在React中,通過(guò)自定義Hook useTimeHook實(shí)現(xiàn)定時(shí)器的啟動(dòng)與清除,在App組件中使用Clock組件展示當(dāng)前時(shí)間,利用useEffect鉤子在組件掛載時(shí)啟動(dòng)定時(shí)器,同時(shí)確保組件卸載時(shí)清除定時(shí)器,避免內(nèi)存泄露,這種方式簡(jiǎn)化了狀態(tài)管理和副作用的處理
    2024-10-10
  • 利用React高階組件實(shí)現(xiàn)一個(gè)面包屑導(dǎo)航的示例

    利用React高階組件實(shí)現(xiàn)一個(gè)面包屑導(dǎo)航的示例

    這篇文章主要介紹了利用React高階組件實(shí)現(xiàn)一個(gè)面包屑導(dǎo)航的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    React在組件中如何監(jiān)聽redux中state狀態(tài)的改變

    這篇文章主要介紹了React在組件中如何監(jiān)聽redux中state狀態(tài)的改變,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • react Input組件Compositionstart和Compositionend事件

    react Input組件Compositionstart和Compositionend事件

    這篇文章主要為大家介紹了Compositionstart和Compositionend事件之于react組件庫(kù)Input組件的坑解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React性能優(yōu)化系列之減少props改變的實(shí)現(xiàn)方法

    React性能優(yōu)化系列之減少props改變的實(shí)現(xiàn)方法

    這篇文章主要介紹了React性能優(yōu)化系列之減少props改變的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01

最新評(píng)論

普定县| 方山县| 房产| 临猗县| 龙口市| 从化市| 从化市| 海门市| 石屏县| 黎平县| 拉孜县| 漳州市| 临夏县| 滨海县| 山丹县| 阿拉善右旗| 志丹县| 德州市| 临西县| 沽源县| 景宁| 乌拉特后旗| 和政县| 望奎县| 昭平县| 梅州市| 广水市| 榆社县| 达州市| 年辖:市辖区| 密山市| 南京市| 花莲市| 肇源县| 犍为县| 谢通门县| 宜兰市| 绍兴县| 南安市| 张北县| 苏州市|