javascript - React 页面不会停止刷新
问题描述
我最近将我的站点部署到了工作测试服务器上。当我在本地构建所有东西时,它似乎工作正常。但是,一旦我继续部署它,该站点现在几乎每秒都会自动刷新。我已经检查了我的代码和我所做的小改动,但似乎无法找到问题的原因以及为什么我们的工作 vps 上的网站现在一次又一次地刷新。我希望有人可能对此有所了解。我已经在下面发布了我的 App.jsx、index.js 和 Home.jsx。对此事的任何见解将不胜感激。
我还应该注意,我回去并将所有内容移回本地,以查看在将其发送到服务器之前是否有可能做的事情。当我在本地运行它时,似乎零问题。我还在多个浏览器上对此进行了测试,并请几位同事看一看,似乎它也在继续为他们和多个浏览器刷新每秒
应用程序.jsx
import "./app.scss";
import Home from "./pages/home/Home";
import Register from "./pages/register/Register";
import Watch from "./pages/watch/Watch";
import Login from "./pages/login/Login";
import {
BrowserRouter as Router,
Switch,
Route,
Redirect,
} from "react-router-dom";
import { useContext } from "react";
import { AuthContext } from "./context/authContext/AuthContext";
const App = () => {
const { user } = useContext(AuthContext);
return (
<Router>
<Switch>
<Route exact path="/">
{user ? <Home /> : <Redirect to="/register" />}
</Route>
<Route path="/register">
{!user ? <Register /> : <Redirect to="/" />}
</Route>
<Route path="/login">{!user ? <Login /> : <Redirect to="/" />}</Route>
{user && (
<>
<Route path="/movies">
<Home type="movie" />
</Route>
<Route path="/series">
<Home type="series" />
</Route>
<Route path="/watch">
<Watch />
</Route>
</>
)}
</Switch>
</Router>
);
};
export default App;
index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import { AuthContextProvider } from "./context/authContext/AuthContext";
ReactDOM.render(
<React.StrictMode>
<AuthContextProvider>
<App />
</AuthContextProvider>
</React.StrictMode>,
document.getElementById("root")
);
主页.jsx
import Navbar from "../../components/navbar/Navbar";
import Featured from "../../components/featured/Featured";
import "./home.scss";
import List from "../../components/list/List";
import { useEffect, useState } from "react";
import axios from "axios";
const Home = ({ type }) => {
const [lists, setLists] = useState([]);
const [genre, setGenre] = useState(null);
const axiosInstance = axios.create({
baseURL: process.env.REACT_APP_API_URL,
});
useEffect(() => {
const getRandomLists = async () => {
try {
const res = await axiosInstance.get(
`lists${type ? "?type=" + type : ""}${
genre ? "&genre=" + genre : ""
}`,
{
headers: {
token:
"Bearer " +
JSON.parse(localStorage.getItem("user")).accessToken,
},
}
);
setLists(res.data);
} catch (err) {
console.log(err);
}
};
getRandomLists();
}, [type, genre, axiosInstance]);
return (
<div className="home">
<Navbar />
<Featured type={type} setGenre={setGenre} />
{lists.map((list) => (
<List list={list} />
))}
</div>
);
};
export default Home;
解决方案
每次渲染都会创建一个新的 axiosInstance,并触发 useEffect 更改。
将 axiosInstance 创建移出组件。
const axiosInstance = axios.create({
baseURL: process.env.REACT_APP_API_URL,
});
const Home = ({ type }) => {
const [lists, setLists] = useState([]);
const [genre, setGenre] = useState(null);
// stuff
};
推荐阅读
- javascript - 如何搜索
在Javascript中通过id作为条件,然后在另一个中输出文本
?
- javascript - 从数据表中提取渲染的单元格数据
- sql - SQL - 创建数据库并查询它
- angular - 我如何在角度的 ngb 分页首页图标上使用工具提示
- javascript - 赛普拉斯任务失败并抱怨任务事件尚未在插件文件中注册
- python - 散景聚集条形图
- c# - 从子元素引用父元素的值
- time-series - 创建按变量级别分组的时间序列
- google-app-engine - App Engine 标准环境中的 Python 3 快速入门
- charles-proxy - Safari 不提示使用 Charles 安装 SSL 证书?