안녕하세요! 수고 많으십니다.
다름이 아니라 현재 Next.js 15, React 18로 웹뷰 서비스를 개발 중인데,
페이지마다 뒤로가기 버튼을 추가하거나 제거하고 싶습니다.
위 3개 링크에서 내용을 다 확인했는데, 페이지마다 동적으로 적용이 안되서 질문 드립니다.
예를 들면, 홈에서 인트로 페이지로 뒤로가기를 방지하기 위해서, 뒤로가기 버튼을 임시로 숨기려고 하는데 안되네요.
혹시 원래 안된다거나, 정석적인 방법이 따로 있을까요?
아래는 granite.config.ts 입니다.
import { defineConfig } from "@apps-in-toss/web-framework/config";
export default defineConfig({
appName: "...",
brand: {
displayName: "...",
primaryColor: "#4890F0",
icon: "...",
bridgeColorMode: "basic",
},
web: {
host: "localhost",
port: 3000,
commands: {
dev: "next dev",
build: "next build",
},
},
permissions: [],
outdir: "dist",
webViewProps: {
type: "partner",
},
navigationBar: {
withBackButton: true,
withHomeButton: false,
},
});
아래는 tds-provider.tsx 입니다.
"use client";
import type { PropsWithChildren } from "react";
import { useEffect } from "react";
import { useRouter } from "next/navigation";
import { partner, tdsEvent } from "@apps-in-toss/web-framework";
import { TDSMobileAITProvider } from "@toss/tds-mobile-ait";
export function TdsProvider({ children }: PropsWithChildren) {
const router = useRouter();
useEffect(() => {
partner.addAccessoryButton?.({
id: "go-home",
title: "홈",
icon: {
name: "icon-home-mono",
},
});
const cleanupEvent = tdsEvent.addEventListener("navigationAccessoryEvent", {
onEvent: ({ id }) => {
if (id === "go-home") {
router.push("/home");
}
},
});
return () => {
cleanupEvent?.();
partner.removeAccessoryButton?.();
};
}, [router]);
return <TDSMobileAITProvider>{children}</TDSMobileAITProvider>;
}
감사합니다. ㅠㅠ