1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React ChakraUIで、「ログインしました」や「ログインに失敗しました」などToastが表示できない

Posted at

はじめに

長時間はまったので記事にします。

問題

「ログインしました」や「ログインに失敗しました」など、一時的なメッセージを表示ができませんでした

解決方法

/src/hooks/useAuth.ts
/src/hooks/useAuth.ts
//toaster.create〜を仕込む


export const useAuth = () => {
    const navigate = useNavigate();
    const [loading, setLoading] = useState(false);

    const login = useCallback((id: string) => {
        setLoading(true);
        axios
            .get<User>(`https://jsonplaceholder.typicode.com/users/${id}`)
            .then((res) => {
                if (res.data) {
                    toaster.create({
                        description: "ログインしました",
                        type: "success",
                    });
                    navigate("/home");
                } else {
                    toaster.create({
                        description: "ユーザーが見つかりませんでした",
                        type: "error",
                    });
                }
            })
            .catch(() => {
                toaster.create({
                    description: "ログインに失敗しました",
                    type: "error",
                });
            })
            .finally(() => setLoading(false));
    }, [navigate]);

    return { login, loading,};
};
src/App.tsx
src/App.tsx
import { Toaster } from "@/components/ui/toaster"

const App = () => {
    return (
        <>
            <Provider>
                <Box>
                    {/* Toasterを設置 */}
                    <Toaster />
                    <RouterProvider router={Router} />
                </Box>
            </Provider>
        </>
    )
};

export default App;

<Toaster />と、
toaster.create({ title: "Toast Title", description: "Toast Description", })
を、同じファイル内で記述しなければならないと思い込んでしまっていました。

また、srcの中の、Login.tsxにを仕込んだところ、
「ログインに失敗しました」は出るものの、
「ログインしました」は出なくて困っていましたが、
navigate("/home")で移動してしまっているので出なくて当たり前でした。
(App.tsxに書かなければならない)

おわりに

終わってみればそれほど難しくなかったですが、長時間かかってしまいました。
処理の流れを正確に理解する必要があると思いました。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?