回调函数未执行:React按钮点击后页面跳转逻辑失效排查
按钮点击后回调函数未执行的排查与修复
核心问题出在FullscreenError组件传递给NextStageButton的onClick回调里——你只是写了onContinue,但没有调用这个函数。
问题分析
当按钮被点击时,NextStageButton的onClickHandler会执行,它会调用你传入的箭头函数:
() => { fireButtonClick(CONTROLS.CONTINUE, { mode: analytics.mode }) onContinue // 这里只是引用函数,没有执行! }
这里的onContinue只是函数的引用,没有加括号()触发执行,所以你的modalSkipClicked异步函数根本没被调用,自然看不到TEST HERE的日志。而按钮的加载spinner正常,是因为onClickHandler里的setButtonPressed(true)确实执行了,不影响UI状态,但回调逻辑没走。
修复代码
把onContinue改成onContinue(),如果需要等待异步函数执行完成,可以把箭头函数声明为async并加await:
{!isBlocking && ( <NextStageButton dataTestId="warning-button" onClick={async () => { fireButtonClick(CONTROLS.CONTINUE, { mode: analytics.mode }) await onContinue() // 调用函数,异步场景下用await确保执行完成 }} copy={ isSingleCartridgeOrCounterfeit ? getText('common.continue') : getText('common.ok') } /> )}
额外检查点
- 在FullscreenError组件里先打印
console.log(onContinue),确认这个函数确实被正确传递,不是undefined - 确认
modalSkipClicked函数本身没有语法错误,比如loadNextPage、CALIBRATION、RESULT.DECLINED这些变量都已正确定义
内容的提问来源于stack exchange,提问作者Bruno Eduardo Rosselli
相关产品推荐
相关产品推荐

