gpt4 book ai didi

javascript - 无法在 react 导航中使用 setParams 将函数设置为参数

转载 作者:行者123 更新时间:2023-11-30 06:14:29 26 4
gpt4 key购买 nike

我正在尝试在单击已获得焦点的选项卡时在包含 ListView 的屏幕中设置滚动到顶部功能。

我正在使用 react-navigation 2.0.0 和 react-native 0.59.8这是我的导航器的样子:

FeedScreen.js returns
render() {
return <Nodes {...this.props} />;
}

Nodes.js
callScrollToTop = () => {
this.listView.scrollToOffset({ offset: 0, animated: true });
}
componentDidMount(){
this.props.navigation.setParams({
scrollToTop: this.callScrollToTop
})
}
// Here, I am able to set a string param like name: "Alice" and that can be seen in navigation state on TabBarOnPress

const Feed = createStackNavigator({
Feed: {
screen: FeedScreen
}
});

const Profile = createStackNavigator({
Profile: {
screen: ProfileScreen
}
});

const TabsScreens = createBottomTabNavigator(
{
Feed,
Profile
},
{
navigationOptions: ({ navigation }) => ({
tabBarOnPress: ({ navigation }) => {
if (
navigation.isFocused() &&
navigation.state.params &&
navigation.state.params.scrollToTop
) {
navigation.state.params.scrollToTop();
}
})
})

我不想要像将 ListView 滚动到顶部这样的精确解决方案。能够在 componentDidMount 上将函数设置为参数并在 tabBarOnPress 上访问它就足够了。请帮我找到解决方案。

谢谢!!

最佳答案

在你各自的标签组件中使用这些,

import { NavigationEvents } from 'react-navigation';

render() {
return (
<View>
<NavigationEvents
onWillFocus={(route) => {
if (route.action.routeName === /* check the screen name mentioned in the routes */) {
//call the function u need
}
}}
/>
// add other components as usual
</View>
);
}

关于javascript - 无法在 react 导航中使用 setParams 将函数设置为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com