Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wix react-native-navigation change Tab and push screen

How can I simultaneously switch tab and push screen? When the button is pressed, I would like to switch to another tab and push a new screen. Is it possible?

class Example extends Component {
      buttonHandler = () => {
        this.props.navigator.switchToTab({
          tabIndex: 0
        });
        this.props.navigator.push({  // actually this navigator's tabIndex is 0 
          screen: "dc.Examplecreen",
          title: "Exampe", 
          passProps: {
            lesson : this.props
          }    
       });
   }
}
like image 928
longman4 Avatar asked Aug 16 '18 07:08

longman4


2 Answers

You can switch the tab using the following code

Navigation.mergeOptions(this.props.componentId, {
  bottomTabs: {
    currentTabId: this.props.componentId
  }
});

and push using

Navigation.push(this.props.componentId, {
  component: {
    name: 'example.PushedScreen',
    passProps: {
      text: 'Pushed screen'
    },
    options: {
      topBar: {
        title: {
          text: 'Pushed screen title'
        }
      }
    }
  }
});

You can make a function combining these 2 codes. Not the best solution i know, but works!

like image 81
Sneha Bharti Avatar answered Oct 23 '22 13:10

Sneha Bharti


There is no any way to passProps with switchToTab. also i found in react-native-navigation but not get any solution. change tab and push using a global variable.

i am using react-native-navigation version 1.1.463

Change tab switchToTab

global.isComeFromBooking = true
this.props.navigator.switchToTab({
   tabIndex: 2,
});

in tab on index 2 setOnNavigatorEvent

componentDidMount() {
    this.props.navigator.setOnNavigatorEvent((e) => {
      if (e.id == 'willAppear' && global.isComeFromBooking) {
        this.props.navigator.push({
          screen: 'Reservations',
          title: 'Bookings',
          animated: true,
          style: {
            backgroundColor: 'black',
          },
          backButtonTitle: '',
        });
        global.isComeFromBooking = false
      }
    });
}
like image 23
Harshal Valanda Avatar answered Oct 23 '22 12:10

Harshal Valanda