【发布时间】:2025-11-24 22:30:01
【问题描述】:
每当我通过 prop 将 App.js 中的 uploadsData 变量发送到 <Gallery data={uploadsData}/>} /> 组件时,它都会被多次调用。
此外,每当我将鼠标悬停在蓝色 ! 上时,我都会在屏幕截图中看到该警告。这意味着我永远无法正确访问此对象。
我怎样才能使它只执行一次,以便我可以以正确的方式访问对象?
我认为在useEffect()(第二个参数)中有一个[]作为依赖项会导致为它只执行一次铺平道路?
提前感谢您花时间阅读。我愿意接受任何形式的反馈,包括被认为是更好的做法的代码改进/更改
这里是App.js:
import { useEffect, useState } from 'react';
import { BrowserRouter as Router, Switch, Route, useHistory} from 'react-router-dom';
import ReactDOM from 'react-dom';
import '../../sass/HomePage/homePage.scss';
import LoginRegister from "./LoginRegister/LoginRegister";
import Gallery from "./Gallery/Gallery";
import Cookies from 'js-cookie';
const App = () => {
const [uploadsData, setUploadsData] = useState([]);
let { push } = useHistory();
let authToken = Cookies.get('token');
useEffect(() => {
getUploads();
},[]);
function getUploads() {
const headers = {
"Accept": 'application/json',
"Authorization": `Bearer ${authToken}`
}
axios.get('http://localhost:8005/api/get-uploads', {headers})
.then(resp => {
let uData = [...uploadsData,resp];
setUploadsData(uData);
if (authToken !== null) {
push('/gallery');
} else {
console.log("User's NOT authenticated, returning to login view");
push('/');
}
}).catch(error => {
console.log(error);
})
}
return (
<>
<Switch>
<Route exact path="/" component={LoginRegister} />
<Route component={() => <Gallery data={uploadsData}/>} />
</Switch>
</>
);
}
export default App;
if (document.getElementById('example')) {
ReactDOM.render(<Router><App/></Router>, document.getElementById('example'));
}
这里是Gallery.js:
import React from 'react';
const Gallery = (data) => {
return (
<>
{console.log(data)}
</>
);
}
export default Gallery;
【问题讨论】:
标签: javascript reactjs debugging