Method is not being invoked when i press the button

后端 未结 2 1950
忘掉有多难
忘掉有多难 2021-01-28 16:55

I am using react navigation and have added a button on the right to signout from my app using default navigation options as shown below :

const otherApp = create         


        
相关标签:
2条回答
  • 2021-01-28 17:35

    You can also use onFocus method of react-navigation to see whether the screen is on focus or not. If the screen is on focus then call the function.

    import { withNavigation } from "react-navigation";
     componentDidMount() {
        const { navigation } = this.props;
        this.focusListener = navigation.addListener("didFocus", () => {
          // The screen is focused
          // Call any action
        });
      }
    
      componentWillUnmount() {
        // Remove the event listener
        this.focusListener.remove();
      }
    
    export default withNavigation(Your Class Name);
    

    Method : 2

    import { NavigationEvents } from "react-navigation";
    
     onFocus = () => {
     //Write the code here which you want to do when the screen comes to focus.
      };
    
      render() {
        return (
            <NavigationEvents
              onDidFocus={() => {
                this.onFocus();
              }}
            />
    )}
    
    0 讨论(0)
  • 2021-01-28 17:40

    I got the solution, what i was doing wrong that i wasn't passing a call back in the onPress of the button !

    logoutFromFirebase = () => {
        this.props.Signout();
        this.props.navigation.navigate(this.props.user.uid ? 'App' : 'Auth')
      }
      componentDidMount(){
        this.props.navigation.setParams({ logout : this.logoutFromFirebase })
      }
    

    And default navigation

    defaultNavigationOptions : ({navigation}) => ({
        title : 'Welcome',
        headerStyle: {
          backgroundColor: '#29434e',
          shadowColor: 'transparent',
          elevation: 0
        },
        headerRight: (
          <TouchableOpacity
            style={{ backgroundColor: '#DDDDDD', padding: 5 }}
            onPress={navigation.getParam('logout' , () => Reactotron.log('Logout not callled'))}>
            <Text
              style={{
                fontSize: 10,
              }}>
              Logout
            </Text>
          </TouchableOpacity>
        ),
      })
    

    And now it is working fine !

    0 讨论(0)
提交回复
热议问题