首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用函数表达式

调用函数表达式
EN

Stack Overflow用户
提问于 2021-01-31 20:39:44
回答 1查看 76关注 0票数 2

我正在学习一个React钩子教程,我不明白为什么函数表达式(顶部timerId中的useEffect )会被自动调用,但是底部useEffect中的函数表达式search需要调用它才能调用它?

代码语言:javascript
复制
 useEffect(() => {
    const timerId = setTimeout(() => {
      setDebouncedTerm(term);
    }, 1500);
 
    return () => {
      clearTimeout(timerId);
    };
  }, [term]);
 
  useEffect (() => {
    const search = async() => {
      const { data } = await axios.get('https://en.wikipedia.org/w/api.php', {
        params: {
          action: 'query', 
          list: 'search',
          origin: '*',
          format: 'json', 
          srsearch: debouncedTerm
        }
      });
      setResults(data.query.search);
    };
    search();
  }, [debouncedTerm]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-31 21:22:29

它将一个函数分配给需要手动调用的search变量。

但是,在其他useEffect的主体中,它调用setTimeout函数并将setTimeout函数的返回值分配给timerId变量。setTimeout函数的返回值是一个正整数,它是超时的唯一标识符。

因此,timerId的值并不是一个函数。这是超时的id。

只有在top useEffect主体中调用的函数才是setTimeout函数。

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

https://stackoverflow.com/questions/65984020

复制
相关文章

相似问题

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