【发布时间】:2021-11-26 03:17:48
【问题描述】:
我正在尝试使用 Typescript 创建一个 React 功能组件,该组件将从 API 获取数据,然后将该数据发送到另一个组件,但是,我收到“错误:重新渲染过多。React 限制防止无限循环的渲染次数。”
请提供任何建议!
useEffect(() => {
await axios.get('https://quote-garden.herokuapp.com/api/v3/quotes/random').then((resp) => {
setQuote1(resp.data.data[0]);
});
getQuote();
}, []);
编辑: 这是发生错误的整个文件。
import React, { useEffect, useState } from 'react';
import { Row, Col, CardGroup } from 'reactstrap';
import axios from 'axios';
import QuoteCard from './QuoteCard';
const MainQuotes = () => {
const [quote1, setQuote1] = useState();
useEffect(() => {
await axios.get('https://quote-garden.herokuapp.com/api/v3/quotes/random').then((resp) => {
setQuote1(resp.data.data[0]);
});
getQuote();
}, []);
return (
<Row>
<Col>
<CardGroup>
<QuoteCard quoteData={quote1} />
</CardGroup>
</Col>
</Row>
);
};
export default MainQuotes;
【问题讨论】:
-
这段代码看起来不错。
setQuote1到底是做什么的? -
你确定有错误吗?
-
同意@SuthanBala,发布 setQuote1
-
@LeshawnRice 我刚刚发布了整个文件
-
@Jack_Lynch 设置状态会导致重新渲染,这就是它循环的原因。如果您在 useEffect 函数中将 quote1 添加到依赖数组中,它应该可以按预期工作
标签: javascript reactjs typescript use-effect use-state