React Native中react-native-searchable-dropdown无法选中选项如何解决
react-native-searchable-dropdown 下拉项点击无响应的问题排查点
- 首先排查接口返回的
items数据结构是否符合组件要求:该组件强制要求数组内每一项必须包含id(数字类型,唯一标识)和name(字符串类型,下拉展示文本)两个必填字段,如果你接口返回的字段名是value/label等自定义命名,组件无法识别选中项,自然不会触发onItemSelect回调。你可以先写死本地测试数据验证:
// 先替换初始state,注释掉useEffect的接口请求测试 const [serverData, setServerData] = useState([ {id: 1, name: '测试选项1'}, {id: 2, name: '测试选项2'}, {id: 3, name: '测试选项3'}, ]);
如果本地测试数据可以正常触发选中,直接调整接口返回字段或者做一层字段映射即可。
- 排查
defaultIndex参数是否越界:你当前配置的defaultIndex={2}默认选中第三项,若接口返回的数组长度不足3,会导致组件内部状态异常,点击事件失效。可以先删除该参数或者修改为defaultIndex={0}测试。 - 排查版本兼容问题:该组件停止更新已久,最新版React Native(0.60+)和组件最新版本存在Touchable事件绑定兼容问题,可将组件版本降级到1.1.3稳定版测试。
- 排查父容器手势冲突:如果你的组件外层嵌套了
ScrollView、GestureHandler等带手势拦截的组件,会拦截下拉项的点击事件,可尝试将该组件单独放在空白页面测试,若单独使用正常,给父级ScrollView添加nestedScrollEnabled={true}属性即可解决冲突。 - 排查回调是否真的未触发:你当前
onItemSelect里写的是alert(item),如果item是对象类型,alert只会展示[object Object],容易被误以为没有触发,可修改为alert(JSON.stringify(item))确认回调执行状态。
内容的提问来源于stack exchange,提问作者samli prajapati
相关产品推荐
相关产品推荐

