reactjs - 我如何设置状态 onClick
问题描述
嗨,所以我得到了带有状态的反应函数,我用它来知道在给定时间应该渲染哪个组件;这是我的主要应用程序功能(我只包括该功能而不是课程的其余部分,因为它不相关)
我的应用功能
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>
推荐阅读
- java - Android Java AppCompatTextView 无法转换为 LinearLayout
- kubernetes - NGINX 入口控制器:我可以终止 TLS 并传递非 http 流量吗?
- youtube-api - ytapiquotarequest 表单具有 reCAPTCHA V1
- laravel - 如何显示 404 消息同时显示页眉和页脚?
- java - 通过传递参数的Java函数
- c++ - 如何从 boost::multi_index 中删除多个元素?
- dependencies - Elixir 依赖项中的版本
- batch-file - 存储数据并使用它来选择一个选项
- javascript - CSS按视口反转图像高度
- forms - symfony DateType 表单字段可以允许其他格式吗?