如何让useEffect每次都执行?

function Demo(prop) {
    const { id } = props

    const [data, setData] = useState([])

    useEffect(() => {
        Api.getData().then((res) => {
            setData(res?.data ?? [])
        })
        
    }, [id])

    return <div>
        ...
    </div>
}

默认的,上面的useEffect只有在id发生变化的时候才会执行,但是我需要每次都执行,不管id是否发生变化,该怎么做呢?(避免死循环)

阅读 5.6k
3 个回答

什么都不依赖 每次都会触发

useEffect(() => {
  setData(...)
})

修改了,人傻了


那还用什么 useState,直接 const 了

function Demo(prop) {
    const { id } = props

    const data = ...

    return <div>
        ...
    </div>
}

额。。看你需求是需要由父组件决定是否执行effect的内容,那可以由父组件传入一个标识符 然后useeffect依赖这个标识符来更新。
例如点击后重新生成一个date实例传给子组件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题