You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TS中传递的箭头函数在内部函数中未触发问题

解决方法

1. 核心问题:未执行closeMenu函数

你在redirectUser里只写了props.closeMenu,这只是引用了函数本身,没有触发执行。要让函数生效,必须加上括号调用它:

修改redirectUser函数:

function redirectUser(event: MouseEvent, url: string): void {
    navigate(url);
    // 调用closeMenu,传递event参数(匹配当前定义的MouseEventHandler类型)
    props.closeMenu(event);
}

2. 优化Props类型(可选但推荐)

父组件的closeMobileMenu是无参函数,但子组件Props里定义的closeMenu是MouseEventHandler<HTMLDivElement>,两者类型其实不匹配(MouseEventHandler要求接收一个MouseEvent参数)。虽然当前没报错,但长期使用容易引发类型问题,建议修正:

子组件Props调整:

interface Props {
    // 改成无参函数类型,贴合实际使用场景
    closeMenu: () => void;
}

父组件无需修改,直接沿用原closeMobileMenu即可

之后在redirectUser里直接调用,不用传event参数:

function redirectUser(event: MouseEvent, url: string): void {
    navigate(url);
    props.closeMenu();
}

完成以上修改后,点击按钮跳转页面的同时,移动端菜单会正常关闭。


内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:52:38