New react developer here, looking for react(hooks) toggle which toggles two things at the same time. My question: when user clicks ‘Click here to show second Div content’, then the content should change to ‘ < div>
Second Div content< / p>
< / div>’ and button should change to ‘Click here to show first Div content’, how to have this as toggle… here what i have done so far:
https://codesandbox.io/s/toggle-menu-forked-f144r?file=/src/App.js:426-483
what kind of impovements are needed here ?
This worked for me:
import React, { useState } from "react";
function App() {
const [openMenu, setOpenMenu] = useState("first");
const toggleMenu = () => {
if (openMenu === "first") {
setOpenMenu("second");
} else {
setOpenMenu("first");
}
};
return (
<div className="App">
<button
onClick={toggleMenu}
>{`Click here to swap content`}</button>
{openMenu === "first" ? (
<div>
<p>First Div content</p>
</div>
) : (
<div>
<p>Second Div content</p>
</div>
)}
</div>
);
}
export default App;
You were doing the right thing, but instead of returning null
when openMenu
is false, you should render the other content.
import React, { useState } from "react";
function App() {
const [openMenu, setOpenMenu] = useState(true);
const toggleMenu = () => {
setOpenMenu(!openMenu);
};
return (
<div className="App">
{openMenu ? (
<div>
<button
onClick={toggleMenu}
>{`Click here to show second Div content`}</button>
<p>First Div content</p>
</div>
) : (
<div>
<button
onClick={toggleMenu}
>{`Click here to show first Div content`}</button>
<p>second Div content</p>
</div>
)}
</div>
);
}
export default App;
You can do it like this;
const toggleMenu = () => {
setOpenMenu(!openMenu);
if(openMenu){
setOpenMenu2("first");
} else {
setOpenMenu2('second')
}
};
return (
<div className="App">
<button
onClick={toggleMenu}
>{`Click here to show ${openMenu2} Div content`}</button>
{openMenu ? (
<div>
<p>First Div content</p>
</div>
) : <div><p> Second Div content </p> </div>}
</div>
);
}