问题描述
我想使用 RefreshControl 来刷新和获取拉取数据。我的问题是当我使用 React Native Navigation 并想将 RefreshControl 添加到所有屏幕时。如果没有重复的 RefreshControl 代码,我该怎么做?我的意思是如何在定义所有导航屏幕的父组件中添加刷新代码,然后在子组件中定义 fetch(或如何在刷新时调用 useFocusEffect)?
父组件:
export default function Index({ navigation }) {
return (
<Drawer.Navigator initialRouteName="Profile">
<Drawer.Screen
name="Profile"
component={Profile}
/>
<Drawer.Screen
name="Training"
component={Training}
/>
<Drawer.Screen
name="Equipment"
component={Equipment}
/>
</Drawer.Navigator>
);
}
孩子:
export default function Equipment({ navigation }) {
const [refreshing,setRefreshing] = React.useState(false);
const wait = (timeout) => {
return new Promise(resolve => {
setTimeout(resolve,timeout);
});
};
const onRefresh = React.useCallback(() => {
setRefreshing(true);
// fetching data here
wait(2000).then(() => setRefreshing(false));
},[]);
useFocusEffect(
React.useCallback(() => {
onRefresh();
},[onRefresh])
);
return (
<ScrollView refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
// how move RefreshControl to parent?
// and define fetching data?
}>
</ScrollView>
);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)