近期公司有個需求,在註冊時要選擇用戶所屬國家,本以爲小事一樁,結果百度發現並沒有RN的相關詞條,只能自己找一套列表和國旗圖標了,沒成想百度上免費的資源基本都不符合,符合的都是收費的(這種東西也值得收費無語),找了很久終於自己整理了一套可行的分享給大家:
首先分享我找到的一套國家列表及國旗圖標(有些沒有國家區號我就刪掉了)
鏈接:https://pan.baidu.com/s/1LdkPWwN6v6omXLCNPw2wmQ
提取碼:8m0s
下載下來有兩個文件 country.js 和 imgArray.js 和一個文件夾countryFlag 。其中country.js用於存放國家中英文名稱、區號、電話編碼,imgArray.js是針對react-native處理過的國旗列表,如果不這麼處理直接引用是會報錯的;countryFlag文件夾是國旗圖標文件夾。
使用方法:
將這兩個文件和國旗圖標文件夾複製到你項目中合適的位置,打開imgArray.js文件,因爲每個人存放文件位置不同,你需要全局修正引用的國旗圖標的路徑(別說你不會全局查找替換)
在你需要使用國家列表的地方import導入country.js 和 imgArray.js這兩個文件,然後使用就很簡單啦,只要注意圖片的引用路徑,這裏舉例:
import countryList from './country';
import imgArray from './imgArray';
// 大家應該都是用Flatlist列表吧
<FlatList data={countryList } renderItem={this._renderItem} alighSelf={'stretch'} style={styles.itemMainBox}/>
// 選擇城市 條目佈局
_renderItem=({ item })=>{
const { language } =this.state; //我的項目需要根據語言環境選擇對應國家中英文名稱
return (
{
item.locale !==' ' ?
<TouchableOpacity onPress={()=>this._countryChosen(item)}>
<View style={[basic.p10, basic.fs14, basic.bb1Black, basic.flexRow, ]}>
<Image source={imgArray[item.locale.toLowerCase()]}style={styles.countryFlagImg}/> //取出對應的國旗圖標
<Text style={[basic.fcw, basic.ml20]}>{language ==='zh' ? item.zh : item.en} +{item.code}
</TouchableOpacity> :null
}
);
};