【发布时间】:2020-10-09 02:28:30
【问题描述】:
当我使用 setMiddle(true) 时出现错误“重新渲染太多..”
你能告诉我为什么吗?
import React, { useState } from "react";
const App = () => {
const [ test, setTest ] = useState(true)
const [ test1, setTest1 ] = useState(false)
const [ middle, setMiddle ] = useState(false)
const setFrame = () => {
console.log('123')
setTest1(false)
}
const titleScreen = () => {
setMiddle(true)
setFrame('myRoom');
return
}
const renderFrame = () => {
return (<div>Ta-daa!</div>)
}
return (
<div>
{test1 ? renderFrame() : null}
{test ? titleScreen() : null}
</div>
)
}
export default App
但是当我删除 setMiddle(true) 和 setTest1(false) 行时,它可以工作
【问题讨论】:
-
您应该避免在渲染方法中设置状态(返回 (...))。在这种情况下,您检查状态变量“test”是否为真,如果是,则使用 setMiddle 和 setTest1 更改状态,这将触发重新渲染。尝试决定在 render 方法之外渲染什么,你应该能够让它按预期工作
标签: reactjs react-hooks