[英]react-native and react-navigation Unable to pass a function as a param to the next screen in NavigationOptions
[英]Unable to set a function as param using setParams in react-navigation
我试图在单击包含焦点的选项卡时在包含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();
}
})
})
我不想要像将列表视图滚动到顶部这样的确切解决方案。 能够在componentDidMount上将函数设置为param并在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>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.