【发布时间】:2020-07-12 08:42:44
【问题描述】:
如何防止出现以下错误:
重新渲染过多。 React 限制了渲染的数量以防止无限循环。'
我的代码:
function App() {
const [items, setItems] = useState([]);
const [isLoading, setIsLoading] = useState(true);
if (items.length == 0) loadMore()
return <div>
{isLoading
? <div>Loading...</div>
: <ol>{items.map(i => <li>{i}</li>)}</ol>
}
<button disabled={isLoading} onClick={loadMore} style={{ width: "100%" }}>
{isLoading ? "Loading..." : "Load again"}
</button>
</div>;
function loadMore() {
setIsLoading(true); // ⚠ errors!
const uri = "https://www.reddit.com/r/reactjs.json";
fetch(uri)
.then(r => r.json())
.then(r => {
const newItems = r.data.children.map(i => i.data.title);
items.push(...newItems);
setItems([...items]);
setIsLoading(false);
});
}
}
【问题讨论】:
标签: reactjs