use*_*537 26 reactjs react-hooks
一旦我运行下面的代码,我就会收到以下错误:
React Hook useEffect 缺少依赖项:'list'。包括它或删除依赖数组 react-hooks/exhaustive-deps
我找不到警告的原因。
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import Form from './Form';
const App = () => {
const [term, setTerm] = useState('pizza');
const [list, setList] = useState([]);
const submitSearch = e => {
e.preventDefault();
setTerm(e.target.elements.receiptName.value);
};
useEffect(() => {
(async term => {
const api_url = 'https://www.food2fork.com/api';
const api_key = '<MY API KEY>';
const response = await axios.get(
`${api_url}/search?key=${api_key}&q=${term}&count=5`
);
setList(response.data.recipes);
console.log(list);
})(term);
}, [term]);
return (
<div className="App">
<header className="App-header">
<h1 className="App-title">Recipe Search</h1>
</header>
<Form submitSearch={submitSearch} />
{term}
</div>
);
};
export default App;
Run Code Online (Sandbox Code Playgroud)
Arj*_*ies 39
在您的 useEffect 中,您正在记录list:
console.log(list);
Run Code Online (Sandbox Code Playgroud)
所以你要么需要删除上面的行,要么list在最后添加到 useEffect 依赖项。所以改变这一行
}, [term]);
Run Code Online (Sandbox Code Playgroud)
到
}, [term, list]);
Run Code Online (Sandbox Code Playgroud)
Die*_*yol 22
您可以通过编写以下内容禁用 lint 警告:
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [term]);
Run Code Online (Sandbox Code Playgroud)
小智 6
的dependency array-这是在第二个可选参数useEffect的功能。useEffect如果里面的参数dependency array与之前的渲染相比发生了变化,React 将调用函数的第一个参数中定义的函数。
然后你不需要list在里面放置变量dependency array。
useEffect(() => {
// do some
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [term]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44357 次 |
| 最近记录: |