Open1

【UI/Component/shadcn-ui】Toast(Toaster)の表示について📝

まさぴょん🐱まさぴょん🐱

Toast(Toaster)の表示には、sonnerがおすすめ📝

https://ui.shadcn.com/docs/components/sonner

https://zenn.dev/hayato94087/articles/67bd017ce4d463

pnpm add sonner

Toasterの設定

import { Fragment, ReactNode } from "react";
import { Header } from "@/components/shared/ui-parts/header";
import { Toaster } from "sonner";

/**
 * 共通のBasic Layout
 *
 * - Header
 * - Main Area
 */
export const BasicLayout = ({ children }: { children: ReactNode }) => {
  return (
    <Fragment>
      <Header />
      <div className="flex flex-col gap-[50px] h-screen w-full">
        <main className="flex gap-2">{children}</main>

        {/* Global Toast設定 */}
        <Toaster richColors position="top-center" />
      </div>
    </Fragment>
  );
};

Toastを使用する側📝

  const handleSubmit = async (values: UserProfileFormValues) => {
    try {
      const res: UserUpdateRes = await UserApi.updateUser(userId, values);
      console.log("更新結果:", res);

      if (res.success && res.user) {
        setUserInLocalStorage(res.user);
        toast.success("プロフィールを更新しました");
        setIsEditing(false);
      } else {
        toast.error("プロフィールの更新に失敗しました");
      }
    } catch (error) {
      console.error("Failed to update profile:", error);
      toast.error("プロフィールの更新に失敗しました");
    }
  };