使用React Hooks设置时的无限循环

时间:2019-08-30 22:10:00

标签: reactjs react-hooks

有这样的反应产生。我希望用户删除他们分享的帖子。我这样做:

  • 用户登录时,我将用户ID保留为cookie。
  • 我获得的用户名与具有捕获的id的数据库中的id相同-HaoAsk
  • 我使用与我收到的用户名共享帖子的用户的用户名进行确认
  • 如果相等,则允许用户使用setOwner。

但是它陷入了一个无限循环。

postgresql.conf

当我使用以下代码时,我用console.log编写的所有内容都会进入无限循环。我不知道。

const user = response.data.filter((dataItem) => (dataItem._id === userid));

const userNickname = JSON.stringify(user.map((value) => { return value.nickName }))
const nickName = userNickname.slice(2, -2)

const deneme1 = posts.filter( (data) => (data.who === nickName))

deneme1 ? setOwner([{ who: nickName,  status: true}]) : setOwner([{ status: false }])

console.log(owner)

先谢谢您!

1 个答案:

答案 0 :(得分:1)

对于任何功能组件,通常都希望确保不要在事件函数之外使用set

就您而言,

   const onClick = e => { 
     // safe to use set method
     setOwner()
   }

   return (
      <Component onClick={onClick} user={user} />
   )

因为功能组件内部的所有内容都在渲染周期内。当react尝试刷新显示时,它将运行。在您的情况下,您将设置一个状态变量,该状态变量将触发渲染,然后设置该变量,然后设置无限圆:)

这意味着在初始化组件后必须找出一个事件。就您而言,这有点棘手,因为您想立即自动为您调用此事件。

请参考类似How to call loading function with React useEffect only once