javascript Reactjs不显示(或呈现)我的页面

cgfeq70w  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(143)

我是新的React,并不完全了解渲染。我创建了一个React应用程序与react-create-app,现在开发一个简单的React组件,但不能显示主页,虽然当它完美的编译。我
它正在呈现我的代码吗?
有人能解释一下吗?
App.js文件:

import { Button } from "react-bootstrap";
import Card from "react-bootstrap/Card";
import CardDeck from "react-bootstrap/CardGroup";
import { useEffect, useState } from "react";
import axios from "axios";

import "./App.css";

function App() {
  const [loggedIn, setLoggedIn] = useState(false);
  const [user, setUser] = useState(null);

  useEffect(() => {
    const token = new URLSearchParams(window.location.search).get(
      "access_token"
    );
    axios
    .get("http://localhost:8010/proxy/user", {
      headers: {
        Authorization: "token" + token,
      },
    })
    .then((res) => {
      setUser(res.data);
      setLoggedIn(true);
    })
    .catch((err) => {
      console.log("error" + err);
    });
  });

  return (
    <div className="App text-center container-fluid">
      {!loggedIn ? (
        <>
          <img
            className="mb-4"
            src="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"
            width={150}
            alt="gitMark"
          ></img>
          <h1 className="h3 mb-3 font-weight-normal">Sign in with GitHub</h1>
          <Button
            type="primary"
            className="btn"
            size="lg"
            href={
              "https://github.com/login/oauth/authorize?client_id=&...redirect_uri=http://localhost:8080/oauth/redirect"
            }
          ></Button>
        </>
      ) : (
        <>
          <h1> Welcome </h1>

          <CardDeck>
            {[...Array(3)].map((e, i) => (
              <Card style={{ maxWidth: "25%", margin: "auto" }}>
                <Card.Img variant="top" src={user.avatar.url} />
                <Card.Body>
                  <Card.Title> {user.name} </Card.Title>
                  <Card.Text> {user.bio} </Card.Text>
                  <Button
                    variant="primary"
                    target="_blank"
                    href={user.html_url}
                  >
                    GitHub Profile
                  </Button>
                </Card.Body>
              </Card>
            ))}
          </CardDeck>
        </>
      )}
    </div>
  );
}

export default App;

index.js文件:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
        <div>hello</div>
    <App />
  </React.StrictMode>
);

reportWebVitals();

我的密码怎么了?我找不到。
以下是错误:

shyt4zoc

shyt4zoc1#

我注意到你的代码里有两点。
首先,在useEffect钩子中没有dependency数组。
其次,如果你想在useEffect中进行异步操作,比如axios请求;你应该把代码移到另一个异步函数中,然后在你的useEffect钩子中调用它,或者你应该用IIFE Package 你的函数。
大概是这样的

useEffect(() => {
    (async () => {
      try {
        const token = new URLSearchParams(window.location.search).get(
          'access_token',
        );
        const {data} = await axios.get('http://localhost:8010/proxy/user', {
          headers: {
            Authorization: 'token' + token,
          },
        });
        setUser(data);
        setLoggedIn(true);
      } catch (error) {
        console.log('error' + error);
      }
    })();
  }, []);

我添加了一个空的依赖项数组,并用IIFE将代码 Package 在useEffect中。
我希望它能有所帮助,更多信息在这里:
How to call an async function inside a UseEffect() in React?

相关问题