为了账号安全,请及时绑定邮箱和手机立即绑定

React Hook useEffect Error missing dependency

React Hook useEffect Error missing dependency

慕码人2483693 2022-08-27 15:15:43
我对 React 很陌生,我正在尝试构建一个应用程序,但是我得到了这个错误:React Hook useEffect 缺少一个依赖项:'getRecipes'。包含它或删除依赖项数组。我不知道如何解决它。任何帮助将不胜感激?useEffect(  () => {    getRecipes();  }, [query]);      const getRecipes = async () => {    const response = await fetch(`https://api.edamam.com/search?q=${query}&app_id=${APP_ID}&app_key=${APP_KEY}`);    const data = await response.json();    setRecipes(data.hits);    console.log(data.hits); }   const updateSearch = e =>  {  setSearch(e.target.value);}const getSearch = e => {  e.preventDefault();  setQuery(search)}  return(        <div className="App">           <form onSubmit={getSearch}className="container">         <input className="mt-4 form-control" type="text" value={search} onChange={updateSearch}/>  <button className="mt-4 mb-4 btn btn-primary form-control" type="submit">Search</button>       </form>              <div className="recipes">               {recipes.map(recipe => (          <Recipe           key={recipe.label}          title={recipe.recipe.label} image={recipe.recipe.image}           ingredients={recipe.recipe.ingredients}calories={recipe.recipe.calories}          />        ))}        </div>    </div>  )}
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

当你调用 React 时,它表明这是对这个 useEffect Hook 的依赖。useEffectgetRecipes();getRecipes


您可以使用效果进行更新:


useEffect(() => {

    getRecipes();

}, [query, getRecipes]);

但是,您将获得


The 'getRecipes' function makes the dependencies of useEffect Hook (at line 18) change on every render. Move it inside the useEffect callback. Alternatively, wrap the 'getRecipes' definition into its own useCallback() Hook. (react-hooks/exhaustive-deps)


因此,您可以更新为:


  useEffect(() => {

    const getRecipes = async () => {

      const response = await fetch(

        `https://api.edamam.com/search?q=${query}&app_id=${APP_ID}&app_key=${APP_KEY}`

      );

      const data = await response.json();

      setRecipes(data.hits);

      console.log(data.hits);

    };


    getRecipes();

  }, [query]);

这表示在修改时将调用此效果,这意味着 getRecipes 使用 调用 API。queryquery


查看完整回答
反对 回复 2022-08-27
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号