在 React 里实现国旗下拉菜单
现在有一个需求,要做一个 国旗的 select
emoji 国旗
很快就找到了一个叫 countries-list
的库,里面包含 emoji
格式的国旗
结合 antd
的 Select
组件,把 select
做了出来
方形国旗
但设计说国旗的形状需要是方形
找到了 react-country-flag
这个库
1 | <ReactCountryFlag |
把 ReactCountryFlag
组件加入到 Select.Option
内之后,发现「第一次点击 select
的时候,会有延迟」
当时以为延迟的原因是:react-country-flag
的国旗 src
使用的是一个 cdn
地址,而非本地文件
就考虑换一个库试试
就找到了 react-world-flags
使用起来非常简单
1 | <Flag code={ code } /> |
但延迟的问题并没有好转……
列表渲染延迟
开始查 antd select 的延迟
问题,发现并没那么简单
Long list optimization · Issue #3789 · ant-design/ant-design · GitHub
直到 v4 版本, antd
才把 long list 渲染问题优化
看了 issue
里的讨论,发现有两个解决方法
- 更新
antd
,但我的代码是antd v2
react v15
更新起来怕是 成本高、风险大 - 使用讨论里推荐的一个组件
SuperSelect
,尝试之后发现没未好转,还出现了双滚动条的问题,不知道是不是因为SuperSelect
是依赖antd v3
的原因
直接使用国旗图片
最后尝试了一下,使用本地 svg 图片作为国旗 src
就把 react-world-flags
这个 repo
下载下来(直接 download zip
),找到 svg 文件目录, copy 到自己项目里
1 | import flag_ZM from '@/flags/svgs/zm.svg' |
1 | import flags from ‘../../../../../js/flag/flags’ |
这么操作之后,看上去是比「使用组件」的方式要好一点
就这样
原文作者: dgb8901,yinxing
原文链接: https://www.itwork.club/2020/12/16/flag-select/
版权声明: 转载请注明出处
为您推荐
体验小程序「简易记账」
关注公众号「特想学英语」