Edd*_*Lam 8 side-effects reactjs react-hooks usecallback use-effect
这很可能是一个愚蠢的问题——我的理解是,任何引发副作用的事情都应该用 来处理useEffect
。我想知道这种理解是否正确。特别是在进行 API 调用的情况下——在钩子中进行 API 调用好吗useCallback
?
如果您想基于某种道具或状态更改来执行此操作,请使用钩子useEffect
,例如,
useEffect(async ()=> {
const user = await userApi.get(props.id) // Api call here
setUser(user)
}, [props.id]})
Run Code Online (Sandbox Code Playgroud)
如果您想通过单击按钮(或任何事件)来执行此操作,
const handleClick = () => {
const user = await userApi.get(props.id)
setUser(user)
}
Run Code Online (Sandbox Code Playgroud)
useCallback
并不真正依赖 api 调用或副作用。useCallback
基本上是根据依赖关系存储函数的“版本”。当依赖项发生变化时,您会得到一个新函数,因为它返回的内容会有所不同,例如,
// props.id = 1
const doSomethingCallback = useCallback(() => {
/* do something with props.id */
}, [props.id])
Run Code Online (Sandbox Code Playgroud)
While props.id === 1
,doSomethingCallback
将始终引用在第一次渲染时声明的函数。如果props.id
更改为2,useCallback
将引用一个新函数。因此,如果doSomethingCallback
是 a 的依赖项useEffect
,当props.id
更改为 2 时,useCallback
将指向一个新函数,然后该函数会被 a 注意到useEffect
并运行其中的任何内容,例如,
useEffect(() => { /* side-effect stuff */}, [doSomethingCallback])
归档时间: |
|
查看次数: |
9510 次 |
最近记录: |