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

134
Visualizações
¿Podemos usar el componente antes de que esté completamente terminado en otro componente de reacción?

Me enfrento a un problema extraño en react/Javascript Mi archivo a continuación llama a los datos de la backend API -end y los asigna para su traducción.

 import i18next from 'i18next'; import apiDelegate from '../src/components/Utils/Common/api.js'; const LanguageDetector = require('i18next-browser-languagedetector'); const initReactI18next = require('react-i18next'); var output; //API call apiDelegate.getTranslations().then((result) => { output = JSON.stringify(result); const tr_fr = 'translation: ' +JSON.parse(output) ; alert(tr_fr); i18next .use(LanguageDetector) .use(initReactI18next) .init({ resources: { en: tr_fr, }, fallbackLng: 'fr', }); i18next.changeLanguage(navigator.language); }); export default i18next;

Las siguientes líneas se utilizan para llamar a la API respaldada. apiDelegate.getTranslations() devuelve datos en forma de key value . para ex {name:"Mahima",company:"Infosys",address:"Bangalore India"} y uso estas propiedades en mi react componenet usando la línea de abajo.

 i18n.t("name");

i18n.t("company") etc.

¿Es posible que estos valores se lean en mi componente antes de que apiDelegate() termine su ejecución? Quiero decir, ¿hay alguna posibilidad de code esté usando el archivo i18 antes de que termine su ejecución? porque no refleja los values . en lugar de API si uso static files entonces funciona perfectamente.

Por favor ayúdenme, estoy luchando mucho para entender esto. se puede resolver?

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

0

Si necesita que sus consumidores esperen hasta que se haya configurado el idioma, puede devolver una promesa de este módulo en su lugar. Algo como:

 let ready = false; const start = () => { return new Promise((res) => { if (ready) return res(i18next); apiDelegate.getTranslations().then((result) => { output = JSON.stringify(result); const tr_fr = 'translation: ' + JSON.parse(output); i18next .use(LanguageDetector) .use(initReactI18next) .init({ resources: { en: tr_fr, }, fallbackLng: 'fr', }); i18next.changeLanguage(navigator.language); }); ready = true; return res(i18next); }); }; export default start;

Actualización: así es como probablemente lo usaría.

 export const useLanguage = () => { const [l, setL] = useState({i18next}); useEffect(() => { apiDelegate.getTranslations().then((result) => { // ... i18next.changeLanguage(navigator.language); setL({i18next}); }); }, []); return l; };
about 4 years ago · Juan Pablo Isaza Relatório

0

Esto parece ser un duplicado de:

  • cómo incorporar datos API en i18next en lugar de un archivo estático
  • El código funciona al leer datos del archivo pero no de la API

Es posible que desee utilizar i18next-http-backend: cómo incorporar datos API en i18next en lugar de un archivo estático

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