在nextjs中的组件内路由组件

dluptydi  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(172)

我有一个登录页面,其中包含3个角色登录。管理员,学生和公司,而不是改变整个页面,我只是想改变各自的角色登录组件。
登录页面

export default function Authpage(){

    return(
        <div className="authpagemain">
            <div className="authsection">
                <div className="logo">
                    <img src="https://res.cloudinary.com/dxi9wcchp/image/upload/v1661091025/quantum_olddxf.png" alt="" />
                </div>
                <div className="form-route">
                    <Studentlogin />
                    <span>
                <Link
                href="/">Admin</Link>
                <Link href="/">Student</Link>
                <Link href="/">Company</Link>
            </span>
                </div>
            </div>
        </div>
    )
}

学生登录组件

export function Studentlogin(){
    const [stemail, setStemail] = useState(String);
    const [stpassword, setStpassword] = useState(String);

    async function Login(e){
        e.preventDefault();
        const student = await pb.collection('users').authWithPassword(stemail, stpassword);
        console.log(student)
    }
    return(
        <form className="login-form">
            <h3>Student Login</h3>
            <input 
            className="login-email" 
            type="email" 
            placeholder="Enter Student Email" 
            onChange={(e)=> setStemail(e.target.value)}/>
            <input
            className="login-password"
            type="password" 
            placeholder="Enter Student Password" 
            onChange={(e)=> setStpassword(e.target.value)}/>
            <button
            onClick={Login} 
            className="login-btn">Login</button>
        </form>
    )
}

所以我有管理员和公司组件太。所以我如何设置路由这些不改变整个页面有什么办法吗?

5ssjco0h

5ssjco0h1#

您可以尝试在URL中使用登录查询参数,并根据该参数更改要呈现的组件。
网址:http://some-url?login = student
当登录查询有学生时,您可以显示学生登录组件,这将有助于使用相同的页面,只需根据登录查询参数更改登录组件,我已为此创建了演示,可以帮助了解更多,如果您有任何查询,请告诉我
DEMO

相关问题