Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
desactivar otro botón en reaccionar js

Tengo un proyecto React que tiene tres botones. Cuando hago clic en un botón, por ejemplo, hago clic en el segundo botón, registrará "esto es del botón dos". seguido de un número aleatorio con intervalo de tiempo de 500ms. Mi objetivo es cuando hago clic en un botón, otros botones se desactivarán, ¿cómo hacer esto? Gracias por adelantado.

Esta es mi aplicación.js

 import './App.css'; import { Button1 } from './Button1.React'; import { Button2 } from './Button2.React'; import { Button3 } from './Button3.React'; function App() { return ( <div className="App"> <Button1>log one</Button1> <Button2>log two</Button2> <Button3>log three</Button3> </div> ); } export default App;

este es mi Button1.React.jsx

 import React from "react"; export const Button1 = ({ children, type, doStuff1 = ()=> { console.log("this is button one ", Math.random().toFixed(1)); setTimeout(doStuff1, 500); }, })=>{ return ( <button onClick={doStuff1} type={type}> {children} </button> ) };

este es mi Button2.React.jsx

 import React from "react"; export const Button2 = ({ children, type, doStuff2 = ()=> { console.log("this is button two ", Math.random().toFixed(1)); setTimeout(doStuff2, 500); } })=>{ return ( <button onClick={doStuff2}type={type}> {children} </button> ) };

este es mi Button3.React.jsx

 import React, { Children } from "react"; export const Button3 = ({ children, type, doStuff3 = ()=> { console.log("this is button three ", Math.random().toFixed(1)); setTimeout(doStuff3, 500); } })=>{ return ( <button onClick={doStuff3}type={type}> {children} </button> ) };

y aquí está la captura de pantalla de la página renderizada ingrese la descripción de la imagen aquí

Me dijeron que hacer esto es usar useState que devuelve una condición booleana para deshabilitar/habilitar el clic, pero no sé cómo hacerlo.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

function App() { const [bool1, setBool1] = useState(false); const [bool2, setBool2] = useState(false); const onClickBtn1 = () => { // your other codes when btn 1 is clicked // ------ setBool2(true); //disable button 2 } const onClickBtn2 = () => { // your codes when btn 2 is clicked // ------ setBool1(true); //disable button 1 } return ( <div className="App"> <button onClick={onClickBtn1} disabled={bool1}>Button 1</button> <button onClick={onClickBtn2} disabled={bool2}>Button 2</button> </div> ); }

Básicamente, usa disabled en el elemento del botón, el valor de disabled debe estar en el estado para que la aplicación se vuelva a procesar si su valor cambia. Finalmente, cambie el valor del estado en el controlador onClick del botón. Debe aprender a usar React Hooks para esto, ya que dijo que no sabe useState.

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Es esto lo que intentas hacer?

 import React, { useState } from "react"; const Button = ({ children, type, disabled, doStuff }) => { return ( <button onClick={doStuff} type={type} disabled={disabled}> {children} </button> ); }; export default function Name() { const [activeButton, setActiveButton] = useState(); const disableOtherButtons = (currentButton) => { if (activeButton === currentButton) { setActiveButton() } else { setActiveButton(currentButton) } } const doStuff1 = () => { console.log("this is button one ", Math.random().toFixed(1)); disableOtherButtons('button1'); }; const doStuff2 = () => { console.log("this is button one ", Math.random().toFixed(1)); disableOtherButtons("button2"); }; const doStuff3 = () => { console.log("this is button one ", Math.random().toFixed(1)); disableOtherButtons("button3"); }; return ( <div> <Button doStuff={doStuff1} disabled={activeButton && activeButton !== "button1"} > Button1 </Button> <Button doStuff={doStuff2} disabled={activeButton && activeButton !== "button2"} > Button2 </Button> <Button doStuff={doStuff3} disabled={activeButton && activeButton !== "button3"} > Button2 </Button> </div> ); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede pasar la referencia useState a los botones

 import { useRef } from 'react'; import './App.css'; import { Button1 } from './Button1.React'; import { Button2 } from './Button2.React'; import { Button3 } from './Button3.React'; function App() { const [ btn1, setBtn1 ] = useState(false) // by default disabled will be set to false const [ btn2, setBtn3 ] = useState(false) const [ btn3, setBtn3 ] = useState(false) const actions = [ setBtn1, setBtn2, setBtn3 ] return ( <div className="App"> <Button1 actions={actions} disabled={btn1}>log one</Button1> <Button2 actions={actions} disabled={btn2}>log two</Button2> <Button3 actions={actions} disabled={btn3}>log three</Button3> </div> ); } export default App;

y para los botones, debe aceptar esos parámetros y trabajar con ellos

 import React from "react"; export const Button1 = (props) => { const { children, type, actions, disabled } = props const doStuff = () => { actions[0](false); // this will set Button1 to disabled console.log("this is button three ", Math.random().toFixed(1)); setTimeout(doStuff3, 500); } return ( <button onClick={doStuff} type={type} disabled={disabled}> {children} </button> ) };

Puedo ver que haces setTimeout(doStuff3, 500); dentro de la función que hace referencia a una función indefinida, es posible que desee definirlos en App.js y pasarlos como props a los botones

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda