React native 无法从React navigation在useFocusEffect内部实现回调
我有一个带有三个选项卡的topTabNavigator的React本机应用程序。通常,当用户更改选项卡时,componentDidMount和componentWillUnmount生命周期方法不起作用。因此,我决定用React Navigation的WillFocus和onDidFocus来代替它们。在这个伟大的库的第五个版本之前,可以导入NavigationEvents组件并将其放在具有焦点回调的视图中:React native 无法从React navigation在useFocusEffect内部实现回调,react-native,react-hooks,react-navigation,side-effects,react-lifecycle,React Native,React Hooks,React Navigation,Side Effects,React Lifecycle,我有一个带有三个选项卡的topTabNavigator的React本机应用程序。通常,当用户更改选项卡时,componentDidMount和componentWillUnmount生命周期方法不起作用。因此,我决定用React Navigation的WillFocus和onDidFocus来代替它们。在这个伟大的库的第五个版本之前,可以导入NavigationEvents组件并将其放在具有焦点回调的视图中: import { NavigationEvents } from 'react-nav
import { NavigationEvents } from 'react-navigation';
class MyTeamScreen {
const store = this.props.store;
const members = store.members;
return (
<View>
<NavigationEvents
onWillFocus={payload => store.getTeamMebers()}
onDidFocus={payload => store.dispose()}
/>
<MymebersList team={members} />
</View>
);
}
export default MyScreen;
类组件:
class MyTeamScreen {
const store = this.props.store;
const members = store.members;
return (
<View>
<FetchMembers store={store} />
<MymebersList team={members} />
</View>
);
}
classmyteamscreen{
const store=this.props.store;
const members=store.members;
返回(
);
}
但我得到了一个错误:
我检查了存储是在钩子内部初始化的,但是它不能从中调用方法,因为它是未定义的。
你能告诉我我做错了什么吗?使用react导航方法代替生命周期componentDidMount和componentWillUnmount是一种好方法吗?或者,您可以向我推荐一种更好的方法,当用户更改选项卡时如何实现副作用?查看您的代码,我很好奇(但不是很确定)您是否引用了错误的道具 你介意试试这个吗? 因为功能组件的第一个参数是props。要参考
props.store
,可以像这样使用对象分解
函数FetchMembers({store}){
聚焦效应(
React.useCallback(()=>{
return()=>store.getMembers();
},[商店])
);
返回null;
}
或
函数获取成员(道具){
聚焦效应(
React.useCallback(()=>{
return()=>props.store.getMembers();
},[props.store])
);
返回null;
}
class MyTeamScreen {
const store = this.props.store;
const members = store.members;
return (
<View>
<FetchMembers store={store} />
<MymebersList team={members} />
</View>
);
}