2022-08-01 react-native 函数组件 利用hook来进行页面刷新
前言:这是针对由函数组件建立的页面逻辑来进行页面刷新,业务需求:页面B返回页面A,页面A进行刷新。
注意:我的这两个页面均为函数组件写的,不是用类组件写的。
页面B返回页面A代码:
navigation.navigate('note', { isRefresh: true });
这个我们给页面A传递了一个参数isRefresh,页面A刷新的逻辑就是监听页面捕获到的参数isRefresh来进行刷新,true就刷新,其余状态不刷新
页面A监听代码:
import { useFocusEffect } from '@react-navigation/native';
// 监听页面刷新
const PageListen = ({ onUpdate }) => {
useFocusEffect(
React.useCallback(() => {
onUpdate();
return () => {
};
}, [onUpdate])
);
return null;
}
const _onUpdate = () => {
// console.log("刷新!");
// console.log(route.params)
if (route.params != undefined) {
if (route.params.isRefresh) {
getData();
navigation.navigate('note', { isRefresh: false });
}
}
}
render() {
return (
<View>
<PageListen onUpdate={_onUpdate} />
</View>
)
注:PageListen可以不用写业务逻辑,业务逻辑放在下面的_onUpdate方法中,getData就是页面A获取数据的方法,我们的这个页面刷新方法的逻辑就是:
PageListen监听到有东西传递过来了,然后抓住这个东西,判断这个东西是否符合条件,符合了就加载getData方法,就等于是刷新页面了。
还有最后一点:判断完isRefresh后需要将其重置为不符合的条件,比如false,否则这个页面就会不断刷新不断刷新。。。
本文部分内容来至:https://www.jianshu.com/p/f584c0c406e3
除了这个useFocusEffect外还可以用DeviceEventEmitter这个方法来刷新,但是我笨学不会,哈哈。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧