Skip to content

BackHandler.removeEventListener issue for React Native 0.77 version and above #5829

Description

@kkusanagi

Hi! 👋

Firstly, thanks for your work on this project! 🙂

Today I used patch-package to patch native-base@3.4.28 for the project I'm working on.

Here is the diff that solved my problem:
Original Issue

useEffect(() => {
    let backHandler = () => {
      callback();
      return true;
    };
    
    if (enabled) {
      BackHandler.addEventListener('hardwareBackPress', backHandler);
    } else {
      BackHandler.removeEventListener('hardwareBackPress', backHandler);
    }
    return () =>
      BackHandler.removeEventListener('hardwareBackPress', backHandler);
  }, [enabled, callback]);

Solution

useEffect(() => {
    let backHandler = () => {
      callback();
      return true;
    };

    if (!enabled) return;

    const backListener = BackHandler.addEventListener('hardwareBackPress', backHandler);

    return () => backListener.remove();
    
  }, [enabled, callback]);

This issue body was partially generated by patch-package.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions