【发布时间】:2021-01-14 17:18:48
【问题描述】:
我收到错误:“无效的钩子调用。只能在函数组件的主体内部调用钩子。”在反应函数中:
interface Items {
items: any[]
}
const [items, setItems] = useState<Items>();
const ItemsList: React.FC<Items> = ({ items }) => {
useEffect(() => {
const response = Http.get<Items>(url).then(res => setItems(res)) || [] as Items[]
}, []) //something wrong with this hook?
return (
<ul>
{items.map((item) => {
return (
<ItemPreview key={item.id} item={item}/>
);
})}
</ul>
)
}
export default ItemsList
我不明白我做错了什么?谁能告诉我错误在哪里?
【问题讨论】:
-
与错误消息中的内容几乎完全相同:您在声明函数组件之前调用了
useState钩子。 -
将
const [items, setItems] = useState<Items>();移动到useEffect(() => {上方和ItemsList: React.FC<Items>下方。
标签: javascript reactjs typescript react-hooks