Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

239
Views
React - Hooks, ¿por qué esta implementación no funciona?

En primer lugar, soy un novato en todos los aspectos de la interfaz, así que disculpe que la respuesta a estas preguntas probablemente sea solo que soy tonto. Sin embargo, tengo que implementar una forma en que los usuarios puedan cambiar sus contraseñas.

Ya existe un archivo useToken.js, que tiene este aspecto:

 import { useState } from 'react'; export default function useToken() { // Checks storage for existing token. const getToken = () => { var tokenString = ''; tokenString = sessionStorage.getItem('token'); if (tokenString === null) { tokenString = localStorage.getItem('token'); } const userToken = JSON.parse(tokenString); return userToken?.token }; const [token, setToken] = useState(getToken()); const saveToken = userToken => { sessionStorage.setItem('token', JSON.stringify(userToken)); setToken(userToken.token); }; return { setToken: saveToken, token } }

Así que traté de crear una función, que usa la función useToken para enviar las credenciales de autenticación de la API.

 import React, {Component, useState} from 'react'; import useToken from '../security/useToken'; async function ChangeUserPassword(credentials){ return fetch('https://api.testsite.de/change-password/', { method: 'PUT', headers: { 'Authorization': 'JWT ' + useToken(), 'Content-Type':'application/json' }, body: JSON.stringify(credentials) }) .then(data => data.json) } export default function ChangePassword(){ const[old_password, setOldPassword] = useState(); const[new_password, setNewPassword] = useState(); const handleSubmit = async e =>{ e.preventDefault(); const creds = await ChangeUserPassword({ old_password, new_password }); }

La función handleSubmit se llama al presionar un botón y la contraseña_antigua y la contraseña_nueva de los campos de entrada.

Cuando trato de ejecutarlo, me da un 'Error de rechazo no controlado', diciendo que los ganchos solo se pueden llamar dentro del cuerpo de un componente funcional. Así que cambié la ubicación de useToken -call dentro del cuerpo de mi función, pero esto me da exactamente el mismo error.

 async function ChangeUserPassword(credentials){ const [token, setToken] = useState(useToken()); return fetch('https://api.zvconnect.de/change-password/', { method: 'PUT', headers: { 'Authorization': 'JWT ' + token, 'Content-Type':'application/json' }, body: JSON.stringify(credentials) }) .then(data => data.json) }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tienes que poner tu estado de uso en el ejemplo del componente principal:

 const SampleApp = () => { const [state1, setState1] = useState; const [state2, setState2] = useState; const MyFunction1 = () => { ..... } const MyFunction2 = () => { ..... } return( <div></div> ) } export default SampleApp;
about 4 years ago · Juan Pablo Isaza Report

0

Solo puede usar ganchos dentro de componentes y otros ganchos, no dentro de una función normal.

No puedes usarlo dentro de ChangeUserPassword()

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!