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

React中cartReducer报‘Expected an assignment or function call...’错误求助

解决Redux Reducer中的"Expected an assignment or function call"错误

我一眼就看到问题出在你的cartReducer的default分支里啦!报错提示"Expected an assignment or function call and instead saw an expression",本质是因为这个分支里你只写了state;——这只是一个没有任何作用的表达式,而Reducer要求每个分支都必须返回一个状态值,不能就这么空着。

错误原因分析

咱们看你的原代码最后一段:

default:state;

这里的state;只是引用了当前状态,但没有把它返回出去。Redux的reducer是纯函数,每一次触发action都必须返回一个新的(或者原有的)状态对象,不然Redux就不知道该怎么更新状态了,这才抛出了这个语法/逻辑错误。

修改后的完整代码

把default分支改成返回state就行,修改后的完整代码如下:

function cartReducer(state={cartitems:[]},action){ 
  switch(action.type) { 
    case CART_ADD_ITEM: 
      const item= action.payload; 
      const product=state.cartitems.find(x=>x.product===item.product); 
      if(product) { 
        return{ 
          cartitems:state.cartitems.map(x=>x.product===product.product? item:x) 
        }; 
      } 
      return { 
        cartitems:[...state.cartitems,item] 
      }; 
    default:
      return state; // 这里改成返回state,而不是只写state;
  } 
}

额外小提醒

  • Reducer必须始终返回一个状态,哪怕是默认分支也要返回初始状态或者当前状态,绝对不能出现没有返回值的情况
  • 注意你代码里的x=&gt;是HTML转义后的字符,实际在JS文件中写代码时要改成x=>(如果是在HTML的<script>标签中写JSX,转义是必要的,但单独JS文件不需要)
  • 确保CART_ADD_ITEM这个常量已经被正确定义和导入,不然后续可能会出现"未定义变量"的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:42:54