Reactjs 如何修复useEffect的依赖项数组中存在的警告错误
我想解决项目中的所有警告,但我不知道应该在依赖数组中包含哪些依赖项。下面我分享代码:Reactjs 如何修复useEffect的依赖项数组中存在的警告错误,reactjs,react-hooks,use-effect,Reactjs,React Hooks,Use Effect,我想解决项目中的所有警告,但我不知道应该在依赖数组中包含哪些依赖项。下面我分享代码: import React, { useState, useEffect } from 'react'; import { Redirect } from 'react-router-dom'; import Layout from '../components/Layout'; import { getPicture, getAlbums, updatePicture } from './ApiAdmin';
import React, { useState, useEffect } from 'react';
import { Redirect } from 'react-router-dom';
import Layout from '../components/Layout';
import { getPicture, getAlbums, updatePicture } from './ApiAdmin';
const UpdatePicture = ({ match }) => {
...
const init = (pictureId) => {
getPicture(pictureId).then(data => {
if (data.err) {
setValues({ ...values, err: data.err })
} else {
// populate the state
setValues({
...values,
name: data.name,
album: data.album._id,
formData: new FormData()
})
initAlbums()
}
})
}
const initAlbums = () => {
getAlbums().then(data => {
if (data.err) {
setValues({
...values,
error: data.err
});
} else {
setValues({
albums: data,
formData: new FormData()
});
}
});
}
const redirectUser = () => {
if (redirectToProfile) {
if (!error) {
return < Redirect to="/" />
}
}
}
useEffect(() => {
init(match.params.pictureId);
redirectUser(); // allows display the changes when a picture is updated
}, []);
...
}
import React,{useState,useffect}来自“React”;
从'react router dom'导入{Redirect};
从“../components/Layout”导入布局;
从“/ApiAdmin”导入{getPicture,getAlbums,updatePicture};
const UpdatePicture=({match})=>{
...
const init=(pictureId)=>{
getPicture(pictureId)。然后(数据=>{
if(data.err){
setValues({…values,err:data.err})
}否则{
//填充州
设定值({
价值观
name:data.name,
唱片集:data.album.\u id,
formData:new formData()
})
initAlbums()
}
})
}
const initAlbums=()=>{
getAlbums()。然后(数据=>{
if(data.err){
设定值({
价值观
错误:data.err
});
}否则{
设定值({
专辑:数据,
formData:new formData()
});
}
});
}
常量重定向用户=()=>{
如果(重定向到文件){
如果(!错误){
返回
}
}
}
useffect(()=>{
init(match.params.pictureId);
redirectUser();//允许在图片更新时显示更改
}, []);
...
}
这是给我的警告:
React Hook useEffect缺少依赖项:“init”、“match.params.pictureId”和“redirectUser”。要么包含它们,要么删除依赖项数组react hooks/dep
非常感谢有谁能帮我做这件事。只要将它们包含在依赖项数组中即可
useEffect(() => {
init(match.params.pictureId);
redirectUser(); // allows display the changes when a picture is updated
}, [init, match.params.pictureId, redirectUser]);
这些都是当它们改变时应该调用新的useEffect运行的东西。我建议让
init
和redirectUser
函数使用useCallback
,这样它们就不会在每个渲染上运行useffect
,除非它们发生更改(它们也会有依赖项数组!)。请参阅此处的reactjs文档 这回答了你的问题吗?您好@Diesel,谢谢您的时间!但是当我添加依赖项时,在终端中出现这个错误:编译失败。第32:9行:“init”未定义没有未定义第32:15行:“match”未定义没有未定义第32:39行:“redirectUser”未定义没有未定义忘记它,使用useCallback我能够解决警告。谢谢