我如何设置 onClick 状态

How do i setState onClick

你好,所以我的反应函数有一个状态,我用它来知道在给定时间应该渲染哪个组件;这是我的主要应用程序功能(我只包括功能而不是 class 的其余部分,因为它不相关)

我的应用程序功能

function App(){
  const [menuState, setMenuState] = useState('journal');
  
  return(
    <>
      <button onClick={setMenuState('journal')}>JOUNRAL</button>
      <button onClick={setMenuState('stats')}>STATS</button>
      <MenuHandler menu={menuState}/>
    </>
  );
}

我的 MenuHandler 函数

function MenuHandler(props) {
  const menu = props.menu;
  if(menu==="journal")
    return (<Journal />);
  if(menu==="stats")
    return (<Stats />);
  return (<Journal />);
}

当我这样做时,我得到了一个无限循环,我不知道为什么。

问题是您在每次渲染时调用 setMenuState,因此是无限循环。您没有将它分配给 onClick 处理程序,传递这样的箭头函数来解决它:

<button onClick={() => setMenuState('journal')}>JOUNRAL</button>
<button onClick={() => setMenuState('stats')}>STATS</button>