javascript 当我第二次点击OnClick(SetState)时,我得到了一个错误,我该怎么办?

oaxa6hgo  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(193)

当我第一次点击〈a onClick{()=〉“function”}〉时,它工作正常,但当我第二次点击时,一切都中断了。下面是代码:

function ref(sub) {
    console.log(Subjects)
    SetSubjects(Subjects[sub] = true)
    console.log(Subjects)
};

const [Subjects, SetSubjects] = useState({
    "Mathematics": false,
    "Physics": false,
    "Ukranian": false,
    "English": false,
    "Chemistry": false,
    "Informatics": false,
    "History": false
})
return (
        <div className="area">
            <div className="logo_header"><a className="logo_header_text" href="/">Owly</a></div>
            <h1 className="tittle">Choose the Subject</h1>
            <div className="select_btns">
                <a onClick={() => ref("Mathematics")} >Mathematics</a>
                <a onClick={() => ref("Physics")} >Physics</a>
                <a onClick={() => ref("Ukranian")} >Ukranian</a>
                <a onClick={() => ref("English")} >English</a>
                <a onClick={() => ref("Chemistry")}>Chemistry</a>
                <a onClick={() => ref("Informatics")}>Informatics</a>
                <a onClick={() => ref("History")}>History</a>
            </div>

这里我得到屏幕第一次点击:

第二次点击:

我按哪个键都没关系

enyaitl3

enyaitl31#

这不是你想的那样

SetSubjects(Subjects[sub] = true)

表达式Subjects[sub] = trueresult 是值true,因此您将Subjects设置为值true。当然,它没有Subjects对象的任何属性。
我猜你在找这个

SetSubjects({ ...Subjects, [sub]: true })

这将把Subjects设置为一个包含Subjects上当前所有属性的对象,并把sub中的值定义的属性设置为true

相关问题