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

React中TypeError 'cb is not a function'错误:prepare函数调用问题

问题分析与解决方案

错误原因

你的prepare是高阶函数:接收store和component后,返回的是另一个需要nextState和cb两个参数的函数。
你调用prepare(store, component)时,仅获取到了这个嵌套的函数;若直接执行该返回函数却未传入cb参数,内部执行cb(null, component)时,cb为undefined,就会抛出TypeError 'cb is not a function'错误。


解决方案

分两种场景处理:

场景1:需要保留高阶函数结构(如路由预加载等场景)

如果prepare是为了适配需要(nextState, cb)格式函数的场景(比如React Router的onEnter),调用时需传入完整参数:

// 方式1:直接执行返回的函数并传入参数
prepare(store, component)(yourNextState, (err, comp) => {
  // 在这里处理返回的component
  console.log(comp);
});

// 方式2:将返回的函数传入对应场景(如路由配置)
const routeConfig = {
  path: '/target-page',
  onEnter: prepare(store, TargetComponent)
};

场景2:希望直接调用prepare就返回component

如果需求是调用prepare(store, component)直接拿到component,修改prepare的结构,去掉嵌套函数:

const prepare = (store, component) => {
    const { dispatch, getState } = store;
    const state = getState();
    const pageState = getPageState(state);
    const { init, dirty } = pageState;
    const { app: { branch } } = state;

    // 执行你的业务逻辑

    // 直接返回component
    return component;
};

// 现在调用即可直接获取component
const targetComponent = prepare(store, component);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:16:08