reactjs - 使用 useEffect 与使用 useCallback 处理 API 调用

标签 reactjs react-hooks use-effect side-effects usecallback

这很可能是一个愚蠢的问题——我的理解是,任何触发副作用的事情都应该用 useEffect 来处理。 .我想知道这种理解是否正确。特别是在进行 API 调用的上下文中——在 useCallback 中进行 API 调用是否好?钩?

最佳答案

如果你想根据某种 Prop 或状态变化来做,请使用 useEffect钩子(Hook),例如,

useEffect(async ()=> {
    const user = await userApi.get(props.id)
    
    setUser(user)
}, [props.id]}
如果您想通过单击按钮(或任何事件)来执行此操作,
const handleClick = () => {
    const user = await userApi.get(props.id)
        
    setUser(user)
}
useCallback并不真正依赖于 api 调用或副作用。 useCallback基本上是根据依赖关系存储函数的“版本”。当依赖项发生变化时,您会得到一个新函数,因为它返回的内容会有所不同,例如,
// props.id = 1
const doSomethingCallback = useCallback(() => { 
    /* do something with props.id */
}, [props.id])
虽然 props.id === 1 , doSomethingCallback将始终引用在第一次渲染时声明的函数。如 props.id更改为 2,useCallback将引用一个新函数。所以,如果 doSomethingCallbackuseEffect 的依赖项, 当 props.id改为 2,useCallback将指向一个新函数,然后该函数会被 useEffect 注意到并运行其中的任何内容,例如,useEffect(() => { /* side-effect stuff */}, [doSomethingCallback])

关于reactjs - 使用 useEffect 与使用 useCallback 处理 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63333044/

相关文章:

javascript - 子组件未更新父属性的更新状态

javascript - useEffect 在自定义钩子(Hook)中使用 ref 缺少依赖项警告

reactjs - 通过远程异步查找来 react Material 表

reactjs - 检索参数并将参数设置为 useEffect Hook 中的获取请求中的参数

reactjs - Semantic-UI-react:如何使模态后面的背景不可选项

javascript - 在另一个类中使用函数 onSubmit (REACT.js)

javascript - 在子元素之前或之后渲染

javascript - 使用 create-react-app 我得到 EEXIST : file already exists

javascript - 防止 useEffect Hook 在 ComponentDidMount() 上运行

use-effect - ReasonML 中的 useEffect 与 useEffect0