我需要使我的模态网站刷新后坚持。一旦用户注销,它就会刷新页面,并且“注销成功”的模态语句消失。我希望模式在退出后显示,并持续到用户单击关闭按钮。我试着使用效果,但我可能用错了,因为我是新的React。
"use client";
import "./signinbutton.css";
import { signIn, signOut, useSession } from "next-auth/react";
import Modal from "./Modal";
import React, { useState } from "react";
import { AiOutlineUserAdd } from "react-icons/ai";
import { IoMdLogOut } from "react-icons/io";
const SigninButton = ({ darkMode }) => {
const [isModalOpen, setIsModalOpen] = useState(false);
const { data: session } = useSession();
console.log(session?.user);
// Function to open the modal
function logOut() {
signOut().then(() => {
setIsModalOpen(true);
});
}
// Function to close the modal
function closeModal() {
setIsModalOpen(false);
}
if (session && session.user) {
return (
<div>
<button onClick={logOut} className="profile-button">
<div className="logout-icon">
<IoMdLogOut
size={32}
color={darkMode ? "#ef9726" : "#0099d8"}
></IoMdLogOut>
</div>
</button>
<Modal show={isModalOpen} onClose={closeModal}>
<h2>Successful Signout</h2>
</Modal>
</div>
);
}
return (
<button onClick={() => signIn()} className="profile-button">
<div className="user-icon">
<AiOutlineUserAdd
size={34}
color={darkMode ? "#ef9726" : "#0099d8"}
></AiOutlineUserAdd>
</div>
</button>
);
};
export default SigninButton;
个字符
2条答案
按热度按时间dddzy1tm1#
如果需要在刷新后保持模式,那么可以使用localStorage来实现。
字符串
4urapxun2#
尝试用如下自定义钩子替换你的
useState
(代码在Typescript中,但你可以在这里使用JS版本):字符串