Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

94
Vistas
Accediendo al estado actualizado dentro de la misma función.

Tengo problemas para acceder al estado después de guardarlo, al llamar a la misma función. Mi estado está configurado así:

 const perLanguageDefault = { calculated_skill: null, display_skill: null, published: false, premium: false, id: null, }; const [perLanguage, setPerLanguage] = useState(perLanguageDefault);

Tengo una función de guardado dentro de uno de mis componentes como tal:

 const _savePerLanguageArticle = async () => { if (perLanguage.id === null) { await _createPerLanguage(); } else if (perLanguage.id !== null) { await _updatePerLanguage(); } if (props.sentences.length !== 0 && perLanguage.id) { await _iterateSentences(); } await _saveRulesArticle(); };

Si no existe un objeto perLanguage, creo uno en la base de datos y lo configuro en estado como tal:

 const _createPerLanguage = async () => { const body = { published: perLanguage.published, premium: perLanguage.premium, article: props.article.id, language: props.lang_id, calculated_skill: perLanguage.calculated_skill, display_skill: perLanguage.display_skill, }; try { const response = await api.post("perLanguageCreateAPI", { body: body, }); await setPerLanguage(response.data); } catch (e) { console.log(e.response); } };

_saveRulesArticle anterior tiene este aspecto:

 const _saveRulesArticle = async () => { const newRules = props.rules.map((rule) => { let ruleobj = {}; ruleobj["rule"] = rule; ruleobj["per_language"] = perLanguage.id; return ruleobj; }); try { const response = await api.post("ruleMappingCreateAPI", { body: newRules, }); } catch (e) { console.log(e.response); return; } };

Sin embargo, debido a que todo está dentro de la misma función principal, _saveRulesArticle no obtiene acceso a la nueva variable perLanguage, no se actualiza, aunque supuestamente _createPerLanguage la crea y la configura.

Sospecho que hay alguna relación con esta página de desbordamiento de pila:

useState establece el método que no refleja el cambio inmediatamente

Más particularmente, la respuesta más votada. Entiendo cómo funciona eso para useEffect , pero ¿cómo funcionaría aquí? ¿Cómo actualizo el estado dentro de una función y luego, dentro de esa función, accedo al mismo estado actualizado? es posible? ¿Es esto un antipatrón?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda