React 原生材料下拉列表 - 如何处理 onPress 事件下拉列表?



我有一个应用程序需要访问不同的API,具体取决于下拉用户触摸,

到目前为止,我正在componentWillMount()调用一个 API 来创建Label并在下拉菜单本身上item Value

api.get('MyURL')
.then((response)=> {
var jsonResult = JSON.parse(response.data)
var result = jsonResult.reduce((r,o)=> r.concat(...Object.values(o)),[])
console.log(result)
this.setState({data: result})
})
.catch((err)=>{
console.log("axios cathing error")
Alert.alert("failed", "Retry to retrieve from API", [{text:'OK', onPress:()=>{this.componentWillMount()}}])
console.log(err)
})
// Rendering Dropdown
<Dropdown
ref={(ref) => this.dropdown = ref}
onFocus={()=>{console.log("onFocus"), console.log(index)}}
dropdownOffset={{top:10, left:30}}
dropdownPosition={0}
itemCount={4}
containerStyle={{borderWidth:1, borderColor:'lightgrey', borderRadius:50, width:DeviceWidth*0.8, paddingLeft:DeviceWidth*0.02}}
inputContainerStyle={{ borderBottomColor: 'transparent' }}
data={data}
itemTextStyle={global.global.TextBold}
valueExtractor={({value})=> value}
onChangeText={(value)=>{this.onChangeTextPress(item.name, value, index)}}
value={this.state.selected[item.name]}
/>

但我没有看到任何处理onPress的道具,只是onChangeText道具在readme上声明

并且有onFocus道具没有在自述文件中声明处理触摸,但onFocus只是在下拉列表中有一些项目的情况下工作,

有某种方法可以处理触摸,即使下拉列表中没有项目也可以工作?

从 react-native-material-dropdown 源中,如果itemCount为 0,则返回onPress

所以唯一的解决方案是分叉存储库并将onFocus调用移动到!itemCount检查上方(或添加不同的 props 方法来保留当前的 API 行为(,然后发布并使用您自己的 fork(或者只是将模块移动到您自己的项目源代码中(。

或者,更改您的设计以使用[{ value: 'Loading...' }]作为初始数据,这可能是更好的用户体验。

最新更新