Reactjs React Hook useEffect缺少依赖项:';getNewPins';
我有一个小项目,从Unsplash获取图像,即使检查了很多次,我的代码仍然有一个问题,我正在运行我的代码,但它总是给出这个错误,但我不明白。任何想法都将不胜感激 App.js:Reactjs React Hook useEffect缺少依赖项:';getNewPins';,reactjs,Reactjs,我有一个小项目,从Unsplash获取图像,即使检查了很多次,我的代码仍然有一个问题,我正在运行我的代码,但它总是给出这个错误,但我不明白。任何想法都将不胜感激 App.js: function App() { const [pins, setNewPins] = useState([]) const getImages = (term) => { return unsplash.get ("https://api.unsplash.com/sea
function App() {
const [pins, setNewPins] = useState([])
const getImages = (term) => {
return unsplash.get ("https://api.unsplash.com/search" , {
params: {
query: term
}
});
};
const onSearchSubmit = (term) => {
getImages(term).then((res) => {
let results = res.data.results;
let newPins = [
...results,
...pins
]
newPins.sort(function(a,b) {
return 0.5 - Math.random();
});
setNewPins(newPins);
});
};
const getNewPins = () => {
let promises = [];
let pinData = [];
let pins = ['Istanbul','cats','sky','lake','nature']
pins.forEach((pinTerm) => {
promises.push (
getImages(pinTerm).then((res) => {
let results = res.data.results;
pinData = pinData.concat(results);
pinData.sort(function(a,b) {
return 0.5 - Math.random();
});
});
);
});
Promise.all(promises).then(()=> {
setNewPins(pinData);
});
};
useEffect(() => {
getNewPins();
}, []);
return (
<div className="app">
<Header onSubmit={onSearchSubmit}/>
<Mainboard pins={pins}/>
</div>
)}
export default App;
函数应用程序(){
常量[pins,setNewPins]=useState([])
常量getImages=(术语)=>{
返回unsplash.get(“https://api.unsplash.com/search" , {
参数:{
查询:术语
}
});
};
const onSearchSubmit=(术语)=>{
获取图像(术语)。然后((分辨率)=>{
让结果=res.data.results;
设newPins=[
…结果,
…别针
]
newPins.sort(函数(a,b){
返回0.5-Math.random();
});
设置新引脚(新引脚);
});
};
const getNewPins=()=>{
让承诺=[];
设pinData=[];
let pins=[‘伊斯坦布尔’、‘猫’、‘天空’、‘湖泊’、‘自然’]
pins.forEach((pinTerm)=>{
承诺,推动(
获取图像(pinTerm)。然后((res)=>{
让结果=res.data.results;
pinData=pinData.concat(结果);
pinData.sort(函数(a,b){
返回0.5-Math.random();
});
});
);
});
承诺。所有(承诺)。然后(()=>{
setNewPins(pinData);
});
};
useffect(()=>{
getNewPins();
}, []);
返回(
)}
导出默认应用程序;
每次渲染后,应用程序中每次都会重新创建getNewPins
方法,并且您在useffect
中使用该方法,即将其放置在[]
数组中。如果这样做,它稍后会说将getNewPins
包装在useCallback
内,以防止重新渲染。相反,您可以将整个函数放在useffect
中,就像这样(因为它是一个一次性操作,最初是完成的):-
函数应用程序(){
常量[pins,setNewPins]=useState([])
常量getImages=(术语)=>{
返回unsplash.get(“https://api.unsplash.com/search" , {
参数:{
查询:术语
}});
};
const onSearchSubmit=(术语)=>{
获取图像(术语)。然后((分辨率)=>{
让结果=res.data.results;
设newPins=[
…结果,
…别针,
]
newPins.sort(函数(a,b){
返回0.5-Math.random();
});
设置新引脚(新引脚);
});
};
useffect(()=>{
const getNewPins=()=>{
让承诺=[];
设pinData=[];
let pins=[‘伊斯坦布尔’、‘猫’、‘天空’、‘湖泊’、‘自然’]
pins.forEach((pinTerm)=>{
承诺,推动(
获取图像(pinTerm)。然后((res)=>{
让结果=res.data.results;
pinData=pinData.concat(结果);
pinData.sort(函数(a,b){
返回0.5-Math.random();
});
})
);
});
承诺。所有(承诺)。然后(()=>{
setNewPins(pinData);
});
};
getNewPins();
}, []);
返回(
);
}
导出默认应用程序;
tnx太多了。谢谢。
function App() {
const [pins, setNewPins] = useState([])
const getImages = (term) => {
return unsplash.get ("https://api.unsplash.com/search" , {
params: {
query: term
}});
};
const onSearchSubmit = (term) => {
getImages(term).then((res) => {
let results = res.data.results;
let newPins = [
...results,
...pins,
]
newPins.sort(function(a,b){
return 0.5 - Math.random();
});
setNewPins(newPins);
});
};
useEffect(() => {
const getNewPins = () => {
let promises = [];
let pinData = [];
let pins = ['Istanbul','cats','sky','lake','nature']
pins.forEach((pinTerm) => {
promises.push (
getImages(pinTerm).then((res) => {
let results = res.data.results;
pinData = pinData.concat(results);
pinData.sort(function(a,b){
return 0.5 - Math.random();
});
})
);
});
Promise.all(promises).then(()=> {
setNewPins(pinData);
});
};
getNewPins();
}, []);
return (
<div className="app">
<Header onSubmit={onSearchSubmit}/>
<Mainboard pins={pins}/>
</div>
);
}
export default App;