react中使用javascript的api

wrrgggsh  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(515)

我试图在我的react中使用api,但似乎无法在我的react前端加载响应。当我在浏览器上查看网络时,我可以看到响应,但它不会显示在网页上。
我的代码在下面,我似乎不知道出了什么问题。

  1. import { useState, useEffect } from "react";
  2. import axios from "axios";
  3. import "./PrivateScreen.css";
  4. const PrivateScreen = ({ history }) => {
  5. const [error, setError] = useState("");
  6. const [privateData, setPrivateData] = useState(null);
  7. const url = "https://jsonplaceholder.typicode.com/users";
  8. useEffect(() => {
  9. if(!localStorage.getItem("authToken")) {
  10. history.push("/login")
  11. }
  12. const fetchPrivateDate = async () => {
  13. const config = {
  14. headers: {
  15. "Content-Type": "application/json",
  16. Authorization: `Bearer ${localStorage.getItem("authToken")}`,
  17. },
  18. };
  19. try {
  20. await axios.get(url, config)
  21. .then(res => {
  22. setPrivateData(res.data);
  23. });
  24. } catch (error) {
  25. localStorage.removeItem("authToken");
  26. setError("You are not authorized. Please login");
  27. }
  28. };
  29. fetchPrivateDate();
  30. }, [history]);
  31. const logoutHandler = () => {
  32. localStorage.removeItem("authToken");
  33. history.push("/login");
  34. };
  35. return error ? (
  36. <span className="error-message">{error}</span>
  37. ) : (
  38. <>
  39. <div style={{ background: "green", color: "white" }}>
  40. {privateData.name}
  41. </div>
  42. <div><p>hello from this side</p></div>
  43. <button onClick={logoutHandler}>Log Out</button>
  44. </>
  45. );
  46. };
  47. export default PrivateScreen;
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
ghhaqwfi

ghhaqwfi1#

首先,你必须改变,而不是
const [privateData, setPrivateData] = useState(null); const [privateData, setPrivateData] = useState([]); 调用数组数据时,我们希望初始化一个空数组
然后,第二,当我们用希望像这样调用的帮助Map方法显示数组数据时,让我知道问题已经解决

  1. {privateData.map((privateDatas) => (
  2. <div style={{ background: "green", color: "white" }}>
  3. {privateDatas.name}
  4. </div>
  5. ))}

相关问题