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

React中将onClick内联函数提取为外部函数后调用API报404如何解决?

问题原因

你改写代码后没有给事件处理函数传入正确的item.url参数:
React的DOM事件回调默认会把**事件对象(MouseEvent)**作为第一个参数传入处理函数,你现在直接将handleGetInfo绑定给onClick,实际传入newsAction的参数是事件对象而非预期的接口地址,最终请求路径错误触发404。

修复方案

方案1:绑定调用时传参(最常用)

在onClick处用箭头函数包裹,手动传入对应条目的url参数:

const handleGetInfo = (url) => {
    dispatch( newsAction(url) )
}

return (
    <ul className="list-group mt-3">
        {news.map((item) => (
            <li 
                key={item.name} 
                className="list-group-item text-capitalize"
            > 
                {item.name}
                <button 
                    className="btn btn-dark btn-sm float-right"
                    onClick={() => handleGetInfo(item.url)}
                >
                    Info
                </button>
            </li>
        ))}
    </ul>
)

方案2:柯里化改造处理函数

将handleGetInfo改造成高阶函数,接收url后返回真正的事件处理函数:

const handleGetInfo = (url) => () => {
    dispatch( newsAction(url) )
}

return (
    <ul className="list-group mt-3">
        {news.map((item) => (
            <li 
                key={item.name} 
                className="list-group-item text-capitalize"
            > 
                {item.name}
                <button 
                    className="btn btn-dark btn-sm float-right"
                    onClick={handleGetInfo(item.url)}
                >
                    Info
                </button>
            </li>
        ))}
    </ul>
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:45:05