2

在您将其标记为重复之前 - 请理解我已尝试关注此处关于 SO 的大部分文章,但它们似乎都没有帮助我,也许我忽略了某些东西,或者我今天有一个大脑放屁。所以请原谅我再次问这个问题。

在我的组件中,我有以下代码要点。

  let { teamid } = props.currentTeam
  useEffect(() => {
    if (teamid) {
      props.teamMembers(teamid);
    }
  }, [teamid]);

正如您可以从上面的代码中验证的那样,我只在我的 useEffect 中使用了 teamid。我没有使用整个道具对象。但是,React 仍然抱怨此消息

React Hook useEffect has a missing dependency: 'props'. Either include it or remove the dependency array. However, 'props' will change when *any* prop changes, so the preferred fix is to destructure the 'props' object outside of the useEffect call and refer to those specific props inside useEffect react-hooks/exhaustive-deps

请让我知道我在这里做错了什么。任何帮助将不胜感激。

4

2 回答 2

3

尝试通过currentTeamteamMembersuseEffect

let { currentTeam, teamMembers } = props

  useEffect(() => {
    if (currentTeam.teamid) {
      teamMembers(currentTeam.teamid);
    }
  }, [currentTeam, teamMembers]);
于 2020-11-14T04:17:26.893 回答
0

基本上,react-hooks/exhaustive-deps警告告诉你的是你仍然在引用props效果中的对象,你就是 - 你没有完全解构道具项目:

let { teamid } = props.currentTeam
useEffect(() => {
  if (teamid) {
    props.teamMembers(teamid); // PROPS STILL REFERENCED - ISSUE
  }
}, [teamid]); // NO DEPENDENCY FOR PROPS - ISSUE

完全解构props对象并包含所有依赖项 - 这样props对象可以更新,如果currentTeamorteamMembers属性没有改变,那么你的效果也不会:

const { currentTeam, teamMembers } = props // FULLY DESTRUCTURED
  
useEffect(() => {
  if (currentTeam.teamid) {
    teamMembers(currentTeam.teamid)
  }
}, [currentTeam.teamid, teamMembers]) // NO PROPS DEPENDENCIES
于 2020-11-14T04:25:56.783 回答