首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useState重定向到Next.js中的不同组件

useState重定向到Next.js中的不同组件
EN

Stack Overflow用户
提问于 2022-03-08 22:00:51
回答 2查看 355关注 0票数 0

我在Next.js中使用了Next.js来根据用户单击的按钮呈现不同的组件。下面是主页的代码(在应用程序中称为account.js ):

代码语言:javascript
复制
//getting components and importing react
import react from 'react'

const account = () => {
    const [active, setActive] = react.useState("general")
    return (
        <>
            <div className="container my-5">
                <div className="container text-center mb-3">
                    <button onClick={() => setActive("general")} className="btn btn-primary btn-lg mx-3">General Information</button>
                    <button onClick={() => setActive("education")} className="btn btn-primary btn-lg mx-3">Education History</button>
                    <button onClick={() => setActive("tests")} className="btn btn-primary btn-lg mx-3">Test Scores</button>
                    <button onClick={() => setActive("background")} className="btn btn-primary btn-lg mx-3">Background information</button>
                    <button onClick={() => setActive("documents")} className="btn btn-primary btn-lg mx-3">Upload documents</button>
                </div>
            </div>

            <div className="container my-5">
                {
                    active === "zero" && <p className='text-center'>Select a field to start</p>
                }
                {
                    active === "general" && <General></General>
                }
                {
                    active === "education" && <Education></Education>
                }
                {
                    active === "tests" && <Tests></Tests>
                }
                {
                    active === "background" && <Background></Background>
                }
                {
                    active === "documents" && <Documents></Documents>
                }
            </div>
        </>
    )
}

export default account

现在,其中一个组件,即Education.js也有一个按钮,当单击该按钮时,将显示一个不同的组件,AddSchool.js。问题是,当我在useState中使用Education.js时,虽然它确实显示了单击按钮时希望它指向的组件,但它会重定向回使用useState的第一页(account.js)。

Education.js代码

代码语言:javascript
复制
import AddSchool from './AddSchool.js'
import react from 'react'


const Education = () => {
    const [schoolerActive, schoolActive] = react.useState("noSchool")

    return (
        <form action="">
            {/* Some stuff here */}
                        <div>
                <button onClick={() => schoolActive("schooler")} className='btn btn-warning'>Add Schools +</button>
                {
                    schoolerActive === "noSchool" && <></>
                }
                {
                    schoolerActive === "schooler" && <AddSchool />
                }
            </div>
        </form>
    )
}

export default Education

我希望当我点击'Add School +‘按钮时,它只会呈现AddSchool.js组件。相反,它所做的就是按照我想要的方式呈现AddSchool.js组件,但是由于某种原因,它会重定向到account.js

有人能指出我在这里出了什么错吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-08 22:13:10

窗体中没有类型属性的按钮会自动提交表单,导致页的位置发生更改。

票数 2
EN

Stack Overflow用户

发布于 2022-03-08 22:20:27

正如另一个答案所提到的,您需要添加一个type属性来指定按钮是表单中的一个按钮。

在HTML中,如果在表单中放置一个按钮而没有<input type="button" />,那么它将自动充当提交按钮。

要解决这个问题,只需将type="button"添加到按钮元素中即可;这样,它不会意外提交表单。

代码语言:javascript
复制
<button type="submit" onClick={() => {...}}>...</button>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71401974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档