首页
学习
活动
专区
圈层
工具
发布

useEffect
EN

Stack Overflow用户
提问于 2022-07-22 19:05:53
回答 1查看 54关注 0票数 2

useEffect监听上下文是正确的吗?

代码语言:javascript
复制
const {
  data,
} = useContext(AuthContext);

async function getProfile() {
    try {
      setLoading(true);
      console.info('getProfile called', data.token);
      const response = await getByToken(data.token);
      if (response && response.ok) {
        setFirstName(response.userData.firstName);
        setLastName(response.userData.lastName);
        setEmail(response.userData.email);
      }
    } catch (e) {
      console.info('Error', e);
    } finally {
      setLoading(false);
    }
  }

  useEffect(() => {
    if (data.userData) {
      getProfile();
    }
  }, [data.userData]);

这就是我发现的使用与null不同的getProfile调用userData的方式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-22 19:18:52

是的,这就是它的工作原理。虽然说useEffect正在监听变量中的更改可能是不正确的。运行useEffect内部的回调是因为满足了两个条件:

  1. 会有渲染的。
  2. 依赖项数组有一个更改依赖项。

rerender是因为上下文值已经更改,内部组件是Consumer of Context (因为它调用了useContext)。而且,由于useEffect依赖数组中包含的依赖项也会发生变化,因此将运行回调。

沙箱链接有一个简单的例子

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73085040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档