React useEffect 导致死循环

React useEffect caused infinite loop

我搜索了很多post关于使用useEffect时的无限循环,但还是想不通

在 useEffect 中,我试图调用 get accounts api,当然,我放了一个空数组,因为我只需要它 运行 在渲染后一次。但目前我喜欢添加 'addAccount' 功能。所以,如果我按下添加按钮,它就会发送一个 post 请求。问题来了,我想检查这个值有没有变化,所以我把这个值放到第二个空数组的参数里,结果死循环了。但是,如果我保留空数组,我的屏幕不会重新呈现。

export default function BC() {
  const [value, setValue] = useState([])

  async function getBCAccount() {
    const result = await axios.get("http://localhost:3004/accounts")
    if(result) {
      setValue(result.data)
    }
  }
  
  async function createBCAccount() {
    const result = await axios.post("http://localhost:3004/accounts", {
      id: 5,
      name: "mmm"
    })
  }
  
  useEffect(()=> {
    getBCAccount()
  }, [])

  const handleAddAccount = () => {
    createBCAccount()
  }

  return (
    <BcContainer>
      <button onClick={handleAddAccount}>add</button>
      {value && value.map((v)=> (
        <AccountContainer key={v.id} to={`/bc/${v.id}`}>
          <p>{v.name}</p>
          <p>{v.coin} BTC</p>
        </AccountContainer>
      ))}
    </BcContainer>
  )

我想你只是在 createBCAccount 中调用 getBCAccount。在create之后,您将再次调用get数据来更新您的value:

  async function createBCAccount() {
    await axios.post("http://localhost:3004/accounts", {
      id: 5,
      name: "mmm"
    })
    getBCAccount()
  }