Скрытие элементов в React

#javascript #reactjs

#javascript #reactjs

Вопрос:

Итак, в основном я хочу скрыть кнопку, когда я нажимаю на нее.

 const Button=()=>{
const [hideButton, setHideButton]= React.useState(false)
function Button(){
 setHideButton(false)
}
return(
<div>

<button onClick={setHideButton}> </button>
</div>
)
}
  

Комментарии:

1. Кажется, что это должно быть не состояние компонента Button, а состояние его родительского компонента.

Ответ №1:

Изначально сделайте так true , чтобы отображалась кнопка. скрыть его на основе щелчка.

 const Button=()=>{
const [hideButton, setHideButton]= React.useState(true)
function handleClick(){
  setHideButton(false)
}
return(
 <div>
   {hideButton amp;amp; <button onClick={handleClick}>Click</button>}
 </div>
)}
  

Или просто поместите!(Нет) перед hideButton -> !hideButton и сделайте его истинным при нажатии кнопки.

 const Button=()=>{
const [hideButton, setHideButton]= React.useState(false)
function handleClick(){
  setHideButton(true)
}
return(
 <div>
   {!hideButton amp;amp; <button onClick={handleClick}>Click</button>}
   <ChildComponent hideButton={hideButton} handleClick={handleClick}/>
 </div>
)}

function ChildComponent ({hideButton, handleClick}) {
  return (
   <>
    <button onClick={handleClick}>Child Button</button>
    {!hideButton amp;amp; <p>
     This is content/paragraph which will be hidden 
     based on based on button click from parent component.
    </p>}
   </> 
  )
}
  

Вы можете изменить в соответствии с вашим требованием, я передал функцию и переменную состояния дочернему компоненту. дочерняя кнопка переключит содержимое дочернего компонента, а родительская кнопка скроется после нажатия.

Комментарии:

1. Еще один вопрос. Как мне передать эту функцию другому компоненту, например, когда я нажимаю на кнопку, она скрывает кнопку, но также скрывает что-то еще в другом компоненте, например, значок

2. @tekila12 Я изменил 2-й пример кода, который вы можете проверить и изменить в соответствии с вашей целью. Если ответ полезен для вас, пожалуйста, проголосуйте / примите его. Спасибо.

3. Я ценю вашу помощь

4. существует проблема, из-за которой он дважды отображает значок, но nvm я как-нибудь с этим разберусь. «Дочерний компонент отображается где-то в другом месте, поэтому double отображает его. Спасибо

Ответ №2:

Просто условно отобразите кнопку, чтобы она не отображалась, если hideButton значение true:

 return(
  <div>
    {!hideButton amp;amp; <button onClick={setHideButton}> </button>}
  </div>
  )
  

Комментарии:

1. Еще один вопрос. Как бы я передал эту функцию другому компоненту, например, когда я нажимаю на кнопку, она скрывает кнопку, но также скрывает что-то еще в другом компоненте, например, значок.

2. Вы могли бы сделать это точно так же, за исключением того, что вам нужно будет передать hideButton или hideIcon в качестве реквизита дочернему элементу

Ответ №3:

Для этого необходимо использовать React hook .

 const Button=()=>{
const [hideButton, setHideButton]= React.useState(false)
function hide(){
 setHideButton(false)
}
return(
<div>

{!hideButton amp;amp; <button onClick={hide}> </button>}
</div>
)
}
  

Ответ №4:

Здесь происходит несколько ошибок.

Именно так должен выглядеть ваш код (один из многих способов)

 const Button = () => {
    const [hideButton, setHideButton] = React.useState(false)
    function handleHideButton() {
        setHideButton(true)
    }
    return (
        <div>
            {!hideButton ? <button onClick={handleHideButton}>Hide</button> : null}
        </div>
    )
}
  

Что вы делали неправильно:

 const Button=()=>{
const [hideButton, setHideButton]= React.useState(false)
// You're creating this function called Button, but should be called something esle like handleHideButton
function Button(){
 // You should be setting this to true when the button is clicked.
 setHideButton(false)
}
return(
<div>
// here you should be calling the handleHideButton function defined above. Calling setHideButton isn't a good option here. 
<button onClick={setHideButton}> </button>
</div>
)
}