【问题标题】:retrieve data from external json file从外部 json 文件中检索数据
【发布时间】:2021-03-30 07:59:43
【问题描述】:

我有一个包含一些数据的 json 文件和一个带有按钮和 div 的 jsx 文件,所以当我将 jsx 文件中的按钮单击到我拥有的 div 中时,我想检索 json 数据,但我没有知道怎么做。

我的 json 文件名为 data.json 我想在单击 (infoBtn) 进入 (dataDisplay)Div 时获取该 json 文件中的数据,我的 json 文件中的数据也是:

{
"countries": ["Iraq", "Turkey", "Yemen"],
  "bootcamps": [
    "Web Development Bootcamp",
    "Android Development Bootcamp",
    "UI/UX Design Bootcamp"
  ],
  "camps": {
    "iraq": [
      "Android Bootcamp, Erbil 2017",
      "Android Bootcamp, Erbil 2018",
      "Web Development Bootcamp, Erbil 2018",
      "Web Development Bootcamp, Qaraqosh 2018",
      "Advanced Android Bootcamp, Erbil 2019",
      "Web Development Bootcamp, Erbil 2020",
      "Web Development Bootcamp, Mosul 2020",
      "UI/UX Design Bootcamp Erbil 2020"
    ],
    "turkey": [
      "Android Bootcamp, Sanliurfa 2017",
      "Android Bootcamp, Istanbul 2018",
      "Web Development Bootcamp, Gaziantep 2019",
      "Web Development Bootcamp, Istanbul Dec 2019",
      "Web Development Bootcamp, Istanbul Feb 2020",
      "Web Development Bootcamp, Istanbul Jun 2020"
    ],
    "yemen": [
      "Web Development Bootcamp, Sana'a 2018",
      "Web Development Bootcamp, Sana'a 2019",
      "Web Development Bootcamp, Sana'a 2020"
    ]
  }
}

就像这样:

import React from 'react';

    const Main = () => {    
  
       return (
     
          <div class="buttons">
        
            <div class="infoDiv"> 
         
               <button id="infoBtn">More Info</button>

            </div>

          <div id="dataDisplay"></div>
                   
      );
    };

       export default Main;

【问题讨论】:

    标签: javascript json reactjs jsx


    【解决方案1】:

    它是外部的并且有时会发生变化吗?然后您需要使用fetch() 和JSON.parse() 从您的服务器检索它。否则,您希望将 import * as jsonData from "./the_file.json" 放在 JSX 文件的顶部并使用 jsonData 作为对象。

    【讨论】:

    • 如果这还不够,你还想知道如何让按钮显示数据,你应该换个标题
    • 其本地文件不在任何服务器中
    • 本地在源代码还是在用户的电脑上?
    • 在用户电脑中。
    • 你不能在用户的电脑上无缝获取文件,只有一个文件选择窗口
    【解决方案2】:
    import React from 'react';
    
    const Main = () => {    
    
        function handleClick(evt){
            var elem = document.getElementById("TARGET_DIV_ID_HERE");
            fetch('URL_TO_JSON_HERE')
                .then(response => response.json())
                .then(data => {
                    elem.innerHTML = data;
                    console.log('Success:', data);
                })
                .catch((error) => {
                    elem.innerHTML = "fetch error";
                    console.error('Error:', error);
                });
    
        }
    
        return (
        
            <div class="buttons">
        
            <div class="infoDiv"> 
            
                <button id="infoBtn" onClick={handleClick} >More Info</button>
    
            </div>
    
            <div id="dataDisplay"></div>
                    
        );
    };
    
    export default Main;
    

    【讨论】:

    • 你甚至没有描述它的工作原理和原因
    • document.getElementById 和 elem.innerHTML = 也不是你使用 react 的方式
    • 对不起,我在工作的时候回答迟了。我已经在那里使用了你的代码,它改变了 div 来获取错误
    • 您的目标是 URL_TO_JSON_HERE 中的正确文件吗?
    猜你喜欢
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2013-11-03
    • 2019-04-28
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多