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

223
Visualizações
Cree una nueva solicitud de recuperación al hacer clic en el botón - SWR / React

Estoy creando una aplicación de trivia utilizando la API de OpenTBD .

Utilizo SWR para realizar mis solicitudes de API y obtener las preguntas y respuestas que quiero mostrar cuando mi componente se procesa.

Llamada API:

 import useSWR from "swr"; export function useFetch(category, amount, difficulty) { const url = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; const fetcher = (...args) => fetch(...args).then((res) => res.json()); const { data, error } = useSWR(url, fetcher, { revalidateOnFocus: false, }); return { data: data, isLoading: !error && !data, isError: error, }; }

Componente :

 function Quiz() { const { category, color } = useSelector((state) => state.start); const { amount, difficulty } = useSelector((state) => state.settings); const gameEnded = useSelector((state) => state.end.isEnded); const dispatch = useDispatch(); const { data, isLoading, isError } = useFetch(category, amount, difficulty); if (isLoading) { return <FlowerSpinner color={color} />; } if (isError) { return <div>An error has occured.</div>; } dispatch(updateQuestions(createQuestions(data.results))); return ( <> <Questions /> {gameEnded ? <PlayAgainBtn /> : <VerifyButton />} </> ); } export default Quiz;

Esto funciona bien, pero ahora, cuando el juego termina, aparece el botón "Reproducir de nuevo" y me gustaría agregar un clic para crear una nueva búsqueda para obtener un nuevo conjunto de preguntas. No puedo llamar al gancho useFetch dentro de una función como hacer:

 <button onClick={() => useFetch(newArgs)} />

así que traté de usar mutate pero creo que porque estoy usando la misma URL (la cantidad, la categoría y la dificultad no cambian) cuando llamo a mutate, no se obtienen nuevos datos

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Podrías probar la obtención condicional que me ha funcionado antes. No recuerdo si invalida el caché de SWR, pero recuerdo que es la respuesta correcta sobre mutate . Mi idea es que cuando selecciona el botón "Reproducir de nuevo", podría tener un estado como

 const [playAgain, setPlayAgain] = useState(false)

Esto se pasa a useFetch y puede estructurar useSWR así:

 const { data, error } = useSWR(playAgain ? url : null, fetcher, { revalidateOnFocus: false, });

Deberá encontrar una solución para el primer juego, pero ese muy bien podría ser otro estado para manejar eso.

about 4 years ago · Santiago Gelvez 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