我为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
),但是任何拉低触发{ {1}}的{{1}}功能失败。我还在RefreshControl
中添加了一些onRefresh
,但它什至没有输出任何内容。
如果我的console.log
看起来像这样:
_onRefresh
一切正常。因此,我遇到了这样的情况:以某种方式调用AppointmentScreen
并返回使const { refreshParent } = navigation.state.params;
//refreshParent();
navigation.goBack();
中refreshParent
中的以下_onRefresh
无效。
有人知道为什么会这样吗?如前所述,我只在iOS上经历过这种情况,但在iOS模拟器和设备上始终如此。
答案 0 :(得分:0)
您可以创建展览版本吗?
另外,您的刷新时间为refreshing={refreshing}
,应该为refreshing={this.state.refreshing}