React : Error: Too many re-renders. React limits the number of renders to prevent an infinite loop
React : Error: Too many re-renders. React limits the number of renders to prevent an infinite loop
我目前正在尝试将我的导航栏导入到一个新项目中。我使用状态挂钩创建了一个导航栏。
export default function Heading() {
const [isOpen, setIsOpen] = useState(false);
return (
<div>
<Navbar color="light" fixed="top" light expand="md">
<NavbarBrand href="/">reactstrap</NavbarBrand>
<NavbarToggler onclick={setIsOpen(!isOpen)} />
<Collapse isOpen={isOpen} navbar>
<Nav className="me-auto" navbar>
<NavItem>
<NavLink href="/components/">Components</NavLink>
</NavItem>
<NavItem>
<NavLink href="https://github.com/reactstrap/reactstrap">
GitHub
</NavLink>
</NavItem>
<UncontrolledDropdown inNavbar nav>
<DropdownToggle caret nav>
Options
</DropdownToggle>
<DropdownMenu end>
<DropdownItem>Option 1</DropdownItem>
<DropdownItem>Option 2</DropdownItem>
<DropdownItem divider />
<DropdownItem>Reset</DropdownItem>
</DropdownMenu>
</UncontrolledDropdown>
</Nav>
<NavbarText>Simple Text</NavbarText>
</Collapse>
</Navbar>
</div>
);
}
我正在像这样在我的 App.tsx 中导入它
import Heading from "./modules/Heading";
export default function App() {
return (
<div className="App">
<Heading/>
</div>
);
}
但是我收到这个错误
Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.
有人知道如何解决这个问题吗?
您的 NavbarToggler
组件中的 onclick
很可能存在此问题。
通常在 React 中,onclick
事件处理程序通常接受 FUNCTION,而不是 FUNCTION CALL。因此,你应该改为
<NavbarToggler onClick={() => setIsOpen(currentState => !currentState)} />
这一小改动创建了一个箭头函数,其作用与以前相同。然而,区别在于这只是一个函数定义,意味着它还没有被调用(并且只是存在)
NavbarToggler onClick 事件中缺少箭头函数。我想会解决问题
我目前正在尝试将我的导航栏导入到一个新项目中。我使用状态挂钩创建了一个导航栏。
export default function Heading() {
const [isOpen, setIsOpen] = useState(false);
return (
<div>
<Navbar color="light" fixed="top" light expand="md">
<NavbarBrand href="/">reactstrap</NavbarBrand>
<NavbarToggler onclick={setIsOpen(!isOpen)} />
<Collapse isOpen={isOpen} navbar>
<Nav className="me-auto" navbar>
<NavItem>
<NavLink href="/components/">Components</NavLink>
</NavItem>
<NavItem>
<NavLink href="https://github.com/reactstrap/reactstrap">
GitHub
</NavLink>
</NavItem>
<UncontrolledDropdown inNavbar nav>
<DropdownToggle caret nav>
Options
</DropdownToggle>
<DropdownMenu end>
<DropdownItem>Option 1</DropdownItem>
<DropdownItem>Option 2</DropdownItem>
<DropdownItem divider />
<DropdownItem>Reset</DropdownItem>
</DropdownMenu>
</UncontrolledDropdown>
</Nav>
<NavbarText>Simple Text</NavbarText>
</Collapse>
</Navbar>
</div>
);
}
我正在像这样在我的 App.tsx 中导入它
import Heading from "./modules/Heading";
export default function App() {
return (
<div className="App">
<Heading/>
</div>
);
}
但是我收到这个错误
Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.
有人知道如何解决这个问题吗?
您的 NavbarToggler
组件中的 onclick
很可能存在此问题。
通常在 React 中,onclick
事件处理程序通常接受 FUNCTION,而不是 FUNCTION CALL。因此,你应该改为
<NavbarToggler onClick={() => setIsOpen(currentState => !currentState)} />
这一小改动创建了一个箭头函数,其作用与以前相同。然而,区别在于这只是一个函数定义,意味着它还没有被调用(并且只是存在)
NavbarToggler onClick 事件中缺少箭头函数。我想会解决问题