#javascript #reactjs
Вопрос:
мне нужно, чтобы при нажатии на один блок открывался вход (уже реализованный), а другой блок закрывался, пожалуйста, помогите. Вот мой код: я уже понял, что появляется ввод onClick, но не могу справиться с другими
function App() { const [isChecked, setIsChecked] = useState(false) const [isClosed, setIsClosed] = useState(false) const handleCheck = () =gt; { setIsChecked(isChecked =gt; !isChecked) } const handleClose = () =gt; { setIsClosed(isClosed =gt; !isClosed) }
возвращение (
lt;div className="App"gt; lt;div onClick={handleCheck}gt;block onelt;/divgt; {isChecked amp;amp; lt;input/gt; } lt;div onClick={handleClose}gt;block twolt;/divgt; {isClosed amp;amp; lt;input/gt; } lt;/divgt;
); }
Комментарии:
1. Мне нужно, чтобы «блок два» закрывался, когда я нажимаю на «блок один», который получает свой ввод, а также наоборот с другим блоком
2. Более подробная информация: когда вы нажимаете на первый блок, под ним должен выпадать вход, а второй блок должен скрываться. Ввод уже показан, проблема в том, что я не знаю, как скрыть второй блок при нажатии на первый
Ответ №1:
import { useState } from "react" export default function App() { const [isChecked, setIsChecked] = useState(false) const [isClosed, setIsClosed] = useState(false) const handleCheck = () =gt; { setIsChecked(true) setIsClosed(false) } const handleClose = () =gt; { setIsClosed(true) setIsChecked(false) } return( lt;div className="App"gt; lt;div onClick={handleCheck}gt;block onelt;/divgt; {isChecked amp;amp; lt;input/gt;} lt;div onClick={handleClose}gt;block twolt;/divgt; {isClosed amp;amp; lt;input/gt;} lt;/divgt; ) }
Комментарии:
1. Я уже сделал это, зачем ты переписал мой код? Мне нужно, чтобы другие блоки закрывались, когда я нажимаю на определенный блок
2. Более подробная информация: когда вы нажимаете на первый блок, под ним должен выпадать вход, а второй блок должен скрываться. Ввод уже показан, проблема в том, что я не знаю, как скрыть второй блок при нажатии на первый
3. братан, я не переписывал твой код. Есть разница . Вы пробовали мой код, прежде чем комментировать?
4. да, я пытался. Вы кодируете ввод вызовов в блоках. Мой предыдущий код делал то же самое, за исключением того, что функция отображения или скрытия ввода работала для меня, а ваш код показывает только ввод. Напишите, что мне нужно было, чтобы снова решить мою проблему, пожалуйста, и попробуйте свой код самостоятельно. Я уже нашел решение, вы можете проверить, что мне нужно, в нижней части страницы моего вопроса.
Ответ №2:
сделай это
function App() { const [isChecked, setIsChecked] = useState(true) const [isClosed, setIsClosed] = useState(true) const handleCheck = () =gt; { setIsChecked(isChecked =gt; !isChecked) } const handleClose = () =gt; { setIsClosed(isClosed =gt; !isClosed) } return ( lt;div className="App"gt; lt;div onClick={handleClose}gt;block onelt;/divgt; {isChecked amp;amp; lt;input/gt; } lt;div onClick={handleCheck}gt;block twolt;/divgt; { isClosed amp;amp; lt;input/gt; } lt;/divgt; ); }
Ответ №3:
Я справился со своей проблемой сам. Вот мой код:
import { useState } from "react" export default function App() { const [isChecked, setIsChecked] = useState(false) const [isClosed, setIsClosed] = useState(false) const handleCheck = () =gt; { setIsChecked(isChecked =gt; !isChecked) } const handleClose = () =gt; { setIsClosed(isClosed =gt; !isClosed) } return( lt;div className="App"gt; { isClosed ? null : lt;div onClick={handleCheck}gt;block onelt;/divgt; } {isChecked amp;amp; lt;input/gt;} { isChecked ? null : lt;div onClick={handleClose}gt;block twolt;/divgt; } {isClosed amp;amp; lt;input/gt; } lt;/divgt; ) }
Ответ №4:
Я думаю, что вы почти правильно поняли код с самого начала!
Вам нужно сделать условным div второго блока.
lt;div onClick={handleCheck}gt;block onelt;/divgt; {isChecked amp;amp; lt;input/gt; } {is Closed amp;amp; lt;div onClick={handleClose}gt;block twolt;/divgt; lt;input/gt; }
Это работает, верно?? 🙂
Комментарии:
1. я уже решил свою проблему, посмотрите на ответ самостоятельно
2. привет!! Да, я знаю, но я говорил вам о другом решении, потому что я не думаю, что два троичных — лучшее решение. Также потому, что оба они возвращают значение null, если условие истинно…лучше всего!