【发布时间】:2019-09-09 14:39:17
【问题描述】:
我正在学习 React hooks 并且有以下代码:
import React, { useState, useEffect } from "react";
import "./App.css";
function App() {
const [count, setCount] = useState(0);
const [person, setPerson] = useState([]);
useEffect(() => {
getPerson();
}, []);
const getPerson = async () => {
const response = await fetch("https://api.randomuser.me");
const data = await response.json();
setPerson(data.results);
};
return (
<div className="App">
<p>You clicked {count} times</p>
<button onClick={() => getPerson(), setCount(count + 1)}>Click Me</button>
<div>{person.map(person => person.name.first)}</div>
</div>
);
}
export default App;
当我单击“单击我”按钮时,我希望更新计数器并调用 API 以获取随机人。单独地,这两个代码都可以工作。但是,当我尝试同时执行这两项操作时,我收到此错误:Too many re-renders. React limits the number of renders to prevent an infinite loop.
我是 React 新手,不知道为什么会这样。我在 UseEffect 方法中添加了[] 作为第二个参数,我认为这可能会阻止页面不断重新渲染。
有人可以帮忙吗?谢谢!
【问题讨论】:
-
我认为您有语法错误?
onClick={() => getPerson(), setCount(count + 1)}
标签: reactjs react-hooks