1. 程式人生 > 實用技巧 >React Native 城市選擇(一)城市資料三方庫引入

React Native 城市選擇(一)城市資料三方庫引入

我們在專案中有時會需要做城市選擇,

我參照的是Ant Design Mobile RN中的城市選擇功能(https://rn.mobile.ant.design/components/picker-cn/),

官方示例中城市資料是依賴@bang88/china_city_data這個庫的,所以首先要匯入專案中這個庫,

匯入後按照官方示例開開心心寫了這個程式碼

const datacity = require('@bang88/china-city-data');

順利的將示例程式碼改造到專案中,執行,然後心碎的一幕到來

然後按照錯誤提示中的1、2、3、4

1. Clear watchman watches: `watchman watch-del-all`.

2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.

3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.

4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.

一頓操作猛如虎,而後執行,尷尬的紅依舊堅挺,

無奈只能上大招

刪除node_modules,重新導包

然而一頓操作後,依舊沒有任何卵用

難道是庫有問題?

此刻腦海中想到一個辦法,直接將城市json檔案自己匯入,不使用三方庫

這樣雖然可以解決問題,但是依舊不知道為什麼會這樣,

此刻作為一名技術的強烈求知慾迫使我一定要找到問題,找到原因。

最終皇天不負有心人,最終找到問題所在

換上以下程式碼

import datacity from '@bang88/china_city_data';

完美解決。

將require引入方式變更為import

ES6標準釋出後,module成為標準,標準使用是以export指令匯出介面,以import引入模組。但是在我們一貫的node模組中,我們依然採用的是CommonJS規範

,使用require引入模組,使用module.exports匯出介面。

impor它是編譯時的(require是執行時的),它必須放在檔案開頭,而且使用格式也是確定的,不容置疑。它不會將整個模組執行後賦值給某個變數,而是隻選擇import的介面進行編譯,這樣在效能上比require好很多。require是賦值過程,import是解構過程

綜上所述:

遇到三方庫報類似錯誤之後,大家可以考慮下是否是引入方式import或require)的問題,也許某種情況下某種方式是好使的

參考:https://blog.csdn.net/u011486491/article/details/90265901?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control