【发布时间】:2021-11-01 10:32:27
【问题描述】:
我在使用useEffect时搜索了很多关于无限循环的帖子,但仍然无法弄清楚
在 useEffect 中,我尝试调用 get accounts api,当然,我放了一个空数组,因为我只希望它在渲染后运行一次。但目前我喜欢添加“addAccount”功能。所以,如果我按下添加按钮,那么它会发送一个发布请求。问题来了,我想检查值是否改变,所以我将值放入第二个参数,即空数组,它会导致无限循环。但是,如果我保留空数组,我的屏幕不会重新渲染。
export default function BC() {
const [value, setValue] = useState([])
async function getBCAccount() {
const result = await axios.get("http://localhost:3004/accounts")
if(result) {
setValue(result.data)
}
}
async function createBCAccount() {
const result = await axios.post("http://localhost:3004/accounts", {
id: 5,
name: "mmm"
})
}
useEffect(()=> {
getBCAccount()
}, [])
const handleAddAccount = () => {
createBCAccount()
}
return (
<BcContainer>
<button onClick={handleAddAccount}>add</button>
{value && value.map((v)=> (
<AccountContainer key={v.id} to={`/bc/${v.id}`}>
<p>{v.name}</p>
<p>{v.coin} BTC</p>
</AccountContainer>
))}
</BcContainer>
)
【问题讨论】:
标签: javascript reactjs http-post use-effect