javascript - JSON 文件仅在函数中加载,但一旦完成,加载的数据就会在 React 中消失

标签 javascript json reactjs

我正在尝试解析 JSON 文件,获取其所有数据并将其放入变量中,以便我可以在其他组件中使用它。我抓取的代码可以很好地解析 json 文件。在第 22 行console.log(data) 打印出 json 中的所有对象,没有问题,但是在第 27 行 console.log(data) 打印出 undefined。任何帮助将不胜感激,谢谢。

var jsonData = require('../../../../file.json');

    var data; 

    function loadJSON(jsonfile, callback) {   

        var jsonObj = new XMLHttpRequest();
        jsonObj.overrideMimeType("application/json");
        jsonObj.open('GET', "../../file.json", true); //asynchronous because true
        jsonObj.onreadystatechange = function () {
              if (jsonObj.readyState == 4 && jsonObj.status == "200") {
                callback(jsonObj.responseText);
              }
        };
        jsonObj.send(null);  
     }

    function load() {
        loadJSON(jsonData, function(response) {
            data = JSON.parse(response);
    //line 21      
            console.log(data);
        });
    }

    load();

    //line 27
    console.log(data);

    const JSONLoad = data;

    module.exports = JSONLoad;

最佳答案

AJAX 调用是异步的,因此在请求接收数据之前,将在 load() 之后立即调用 console.log(data)

关于javascript - JSON 文件仅在函数中加载,但一旦完成,加载的数据就会在 React 中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711968/

相关文章:

javascript - Node : How to enable non strict or ECMASCRIPT3 in V8 engine?

javascript - 使用 Modernizr 检测移动设备的最可靠方法是什么?

json - Oracle JSON_OBJECT_T 到 Clob

javascript - 在文本中查找电话号码和具体格式以及电子邮件,我正在使用 javascript ReactJs

javascript - 如何通过 this.props.children() 而不是 this.props.children 传递 props

javascript - 查找字符串中引号之间的值并将该值存储在变量中

javascript - 使用 javascript 添加和删除文本框

javascript - 从json中读取数据

java - 使用 POJO 和 Enum 将 JSON 转为 Spring Controller

javascript - 如何在渲染前使用 setState 更新状态