Skip to content

Instantly share code, notes, and snippets.

@uicodee
Created May 30, 2025 07:16
Show Gist options
  • Select an option

  • Save uicodee/1a036c0facd8769996730aea16c74b28 to your computer and use it in GitHub Desktop.

Select an option

Save uicodee/1a036c0facd8769996730aea16c74b28 to your computer and use it in GitHub Desktop.
import { backButton, hapticFeedback } from "@telegram-apps/sdk-react";
import { useCallback, useEffect } from "react";
import { useNavigate } from "react-router-dom";
interface BackButtonProps {
customCallback?: () => void;
enabled?: boolean;
}
export const useBackBtn = (props?: BackButtonProps) => {
const { customCallback, enabled = true } = props || {};
const navigate = useNavigate();
const handleGoBack = useCallback(() => {
hapticFeedback.impactOccurred("medium");
navigate(-1);
}, [navigate]);
useEffect(() => {
if (enabled) {
backButton.show();
}
return () => {
if (enabled) {
backButton.hide();
}
};
}, []);
useEffect(() => {
if (customCallback && enabled) {
backButton.onClick(customCallback);
} else {
if (enabled) {
backButton.onClick(handleGoBack);
}
}
return () => {
if (customCallback && enabled) {
backButton.offClick(customCallback);
} else {
if (enabled) {
backButton.offClick(handleGoBack);
}
}
};
}, [handleGoBack, customCallback]);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment