javascript - 如何从 div 调用函数并渲染返回的 json 对象?

标签 javascript json reactjs

我有以下 React js 代码页:

import React, { useState } from "react";
import { Auth, API } from "aws-amplify";

function dailyFiles(props) {
 const [apiError502, setApiError502] = useState(false); 

  // Pull out into a generic reusable function
  const getData = async () => {
    try {
      let apiName = "Dev";
      let path = "/test";
      let myInit = {
        headers: {
          Authorization: `Bearer ${(await Auth.currentSession())
            .getIdToken()
            .getJwtToken()}`
        }
      };
       var result = await API.get(apiName, path, myInit);
    } catch (e) {
      if (e.message === "Request failed with status code 502") {
        toggleApiError502(true);
      } else {
        alert(JSON.stringify(e));
        props.onLogout();
      }
    }
    return result;
  };

  const toggleApiError502 = (show = false) => {
    setApiError502(show);
  };

  var files = {
    Files: [
      {
        Day: "Monday",
        file: "10-02-2020"
      },
      {
        Day: "Friday",
        file: "14-02-2020"
      }
    ]
  };

  return (
    <div className="animated fadeIn">
      <div>
        {files.Files.map(block => block.Day + ": " + block.file + "  ")}
      </div>
    </div>
  );
}

export default dailyFiles;

当我从 div 调用静态 Var files 变量时:

var files = {Files: [{Day: "Monday",file: "10-02-2020"},{Day: "Friday",file: "14-02-2020"}]};

  <div>
    {files.Files.map(block => block.Day + ": " + block.file + "  ")}
  </div>

我得到了预期的结果,但是如何调用我的函数 getData() 获得相同的结果?

const getData = async () => {

getData函数调用一个API,它返回与var文件相同的内容结果?

我尝试在 div 中使用 this.getdata() 调用该函数,但没有成功。

最佳答案

使用useEffect组件安装后获取数据。

function dailyFiles(props) {
  const [apiError502, setApiError502] = useState(false);
  const [files, setFiles] = useState([]);

  useEffect(() => {
    // Pull out into a generic reusable function
    const getData = async () => {
      try {
        let apiName = "Dev";
        let path = "/test";
        let myInit = {
          headers: {
            Authorization: `Bearer ${(await Auth.currentSession())
              .getIdToken()
              .getJwtToken()}`
          }
        };
        var result = await API.get(apiName, path, myInit);
        setFiles(result); // set your files here
      } catch (e) {
        if (e.message === "Request failed with status code 502") {
          setApiError502(true);
        } else {
          alert(JSON.stringify(e));
          props.onLogout();
        }
      }
      return result;
    };
    // call getData
    getData();
  }, []);

  return (
    <div className="animated fadeIn">
      <div>
        {Array.isArray(files.Files) && files.Files.map(block => block.Day + ": " + block.file + "  ")}
      </div>
    </div>
  );
}

export default dailyFiles;

关于javascript - 如何从 div 调用函数并渲染返回的 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680575/

相关文章:

javascript - 如何将对象中的键值对转换为对象数组?

javascript - JSC_TRAILING_COMMA : Parse error. IE8(及更低版本)- jshint 可以警告我左尾随逗号吗?

javascript - 上传图片并停留在页面上

javascript - 通过Ajax更新数据

javascript - 如何在 Service Worker 中缓存动态 URL?和预缓存有关系吗?我正在使用 ReactJS 默认 serviceWorker

javascript - 我们如何在没有条件的情况下递增然后递减计数器?

asp.net - 为什么默认情况下不允许 GET 请求返回 JSON?

javascript - 如何将我的 ajax 调用输出添加/合并到 mysql 插入查询?

javascript - 一个月内的小时数的数学函数

javascript - 数据出现在网站上后禁用预加载器