近期公司有个需求,在注册时要选择用户所属国家,本以为小事一桩,结果百度发现并没有RN的相关词条,只能自己找一套列表和国旗图标了,没成想百度上免费的资源基本都不符合,符合的都是收费的(这种东西也值得收费无语),找了很久终于自己整理了一套可行的分享给大家:
首先分享我找到的一套国家列表及国旗图标(有些没有国家区号我就删掉了)
链接:https://pan.baidu.com/s/1BPxB-AwW7sMbpasV5SEdEg
提取码:1111
下载下来有两个文件 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
}
);
};