我是新的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();
我的密码怎么了?我找不到。
以下是错误:
1条答案
按热度按时间shyt4zoc1#
我注意到你的代码里有两点。
首先,在useEffect钩子中没有dependency数组。
其次,如果你想在useEffect中进行异步操作,比如axios请求;你应该把代码移到另一个异步函数中,然后在你的useEffect钩子中调用它,或者你应该用IIFE Package 你的函数。
大概是这样的
我添加了一个空的依赖项数组,并用IIFE将代码 Package 在useEffect中。
我希望它能有所帮助,更多信息在这里:
How to call an async function inside a UseEffect() in React?