【发布时间】:2018-12-18 13:14:40
【问题描述】:
我的PersonScreen 有以下(简化的)设置,导航到AppointmentScreen:
class PersonScreen {
state = {
refreshing: false,
};
_onRefresh = () => {
this.setState({ refreshing: true });
this._fetchStuff()
.then(() => {
this.setState({ refreshing: false });
};
};
render() {
return (
<View style={CONTAINER}>
<ScrollView
keyboardShouldPersistTaps="handled"
refreshControl={<RefreshControl refreshing={refreshing} onRefresh={this._onRefresh} />}
<ListItem
key={ITEM.id}
title={moment(DATETIME).format(FORMAT))}
onPress={() => {
navigation.navigate('AppointmentScreen', {
appointment: ITEM,
refreshParent: this._onRefresh,
});
}
/>
</ScrollView>
</View>
);
}
}
在AppointmentScreen 上,您做出一些选择,然后返回执行以下操作:
const { refreshParent } = navigation.state.params;
refreshParent();
navigation.goBack();
这不起作用的唯一情况是在 iOS 上。只要我去PersonScreen 并刷新它就可以工作。但是,如果我从PersonScreen 转到AppointmentScreen 并返回它确实会触发refreshParent(本质上是_onRefresh),但是任何下拉以触发RefreshControls onRefresh 函数的尝试都会失败.我还在_onRefresh 中添加了一些console.log,但它甚至没有输出任何内容。
如果我的AppointmentScreen 看起来像这样:
const { refreshParent } = navigation.state.params;
//refreshParent();
navigation.goBack();
一切正常。所以我遇到了以某种方式调用refreshParent 然后返回使RefreshControl 中的_onRefresh 在PersonScreen 中的以下_onRefresh 不起作用。
有没有人知道为什么会这样?如前所述,我只在 iOS 上体验过这一点,但在 iOS 模拟器和设备上始终如此。
【问题讨论】:
标签: ios react-native react-native-navigation uirefreshcontrol