码
export default function Header(){
let showMe = false;
function toggle(){
showMe = !showMe;
}
return (
<>
<button onClick={toggle}>Toggle Subjects</button>
{/*The bottom code should toggle on and off when the button is pressed*/}
<div style={{
display: showMe?"block":"none"
}}>
This should toggle my display
</div>
</>
);
}
期望
div
标记应在可见性之间切换(例如,如果单击一次按钮,则div标记应显示,如果再次单击,它将被隐藏,依此类推)。现实
看来变量
showMe
发生了变化,但是div
标记没有跟随更新,而是保持隐藏状态。注意:如果正在更改任何内容,我正在使用next.js。
最佳答案
showMe
必须是一个状态变量,以便当showMe
更改时,React知道重新渲染组件。我读过这篇文章:https://reactjs.org/docs/hooks-state.html
下面的代码应该可以工作(请注意如何将showMe
替换为对useState
的调用)。
export default function Header(){
const [showMe, setShowMe] = useState(false);
function toggle(){
setShowMe(!showMe);
}
return (
<>
<button onClick={toggle}>Toggle Subjects</button>
{/*The bottom code should toggle on and off when the button is pressed*/}
<div style={{
display: showMe?"block":"none"
}}>
This should toggle my display
</div>
</>
);
}
括号表示法
const [showMe, setShowMe] = useState(false);
是数组解构:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignmentuseState
返回长度为2的数组。使用数组解构,将返回数组的第一个元素设置为showMe
,将返回数组的第二个元素设置为setShowMe
。