首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在react组件中将Dinamic导入到JSON文件中

在react组件中将Dinamic导入到JSON文件中
EN

Stack Overflow用户
提问于 2022-04-22 04:58:18
回答 2查看 48关注 0票数 0

我正在尝试读取带有react组件的json文件。其思想是能够根据default_lang变量选择要读取的文件。这是文件结构和我试图读取它们的方式。

./config.json

代码语言:javascript
代码运行次数:0
运行
复制
{
  "enable-lang":{
    "es": "spanish",
    "en": "spanish"
  },
  "default-lang": "en"
}

./字典/spanish.json

代码语言:javascript
代码运行次数:0
运行
复制
{
  "title": "Pagina en construccion",
  "description": "Esta página sigue en construcción"
}

./字典/english.json

代码语言:javascript
代码运行次数:0
运行
复制
{
  "title": "Page under construction",
  "description": "This page is still under construction"
}

./Language.js

代码语言:javascript
代码运行次数:0
运行
复制
import {Component} from "react";
import config from "./config.json";


export class Language extends Component
{
    static getUsedDictionary() {
        let used_lang = "es";
        let dictionary_path = `./dictionary/${ config["enable-lang"][used_lang] }.json`;
        return import(`${dictionary_path}`);
    }

    static getText (id) {
        let dictionary = this.getUsedDictionary();
        console.log("Dictionary value in getText:" + dictionary);
        console.log("Dictionary[id] value in getText:" + dictionary);
        if(dictionary[id] !== undefined) {
            return dictionary[id];
        } else {
            return dictionary['text-not-found'];
        }
    }
}

函数getText中的字典和字典值。我可以在控制台上看到这个

代码语言:javascript
代码运行次数:0
运行
复制
Dictionary value in getText:[object Promise]
Dictionary[id] value in getText:[object Promise]
EN

回答 2

Stack Overflow用户

发布于 2022-04-22 05:15:49

为什么不使用反应-i18Next

或者加载之前的所有内容,并选择要使用的

票数 1
EN

Stack Overflow用户

发布于 2022-04-22 05:27:30

import()返回一个承诺,因此要考虑到这一点,您必须重构代码,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
import {Component} from "react";
import config from "./config.json";


export class Language extends Component
{
    static getUsedDictionary() {
        let used_lang = "es";
        let dictionary_path = `./dictionary/${ config["enable-lang"][used_lang] }.json`;
        return import(`${dictionary_path}`);
    }

    async static getText (id) {
        let dictionary = await this.getUsedDictionary();
        console.log("Dictionary value in getText:" + dictionary);
        console.log("Dictionary[id] value in getText:" + dictionary);
        if(dictionary[id] !== undefined) {
            return dictionary[id];
        } else {
            return dictionary['text-not-found'];
        }
    }
}

要完成解决方案,最好是处理来自getUsedDictionary()的可能异常,因为请求可能会失败。一个现代的选项是使用一个错误边界,或者您可以做一些其他类型的处理。

请注意,在进行此更改后,您可能必须适应您的代码来处理异步getText

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71963642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档