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

React与Redux中扩展运算符编译错误求助

解决React Redux Reducer中扩展运算符的编译错误

嘿,我看到你刚接触React和Redux,在写reducer时遇到了扩展运算符的编译问题,咱们来一步步搞定它~

问题根源

你的代码里,SUCCESS case的这一行语法是无效的:

chapters: { ...state.chapters, action.payload }

JavaScript对象字面量里不能直接这么写action.payload——解释器不知道你要把这个payload赋值给哪个键,这就是编译报错的核心原因。

针对性解决方案

根据action.payload的结构,有两种常见的修正方式:

情况1:payload是单个章节对象(带唯一标识,比如id)

如果action.payload是一个单独的章节对象(比如{ id: 1, title: "第一章" }),你需要用计算属性名把它添加到chapters对象中:

case SUCCESS:
  return {
    ...state,
    chapters: {
      ...state.chapters,
      [action.payload.id]: action.payload // 用章节的id作为键
    },
    isFetching: false
  };

情况2:payload是多个章节的集合对象

如果action.payload本身就是一个键值对形式的章节集合(比如{ 1: {id:1, title:"第一章"}, 2: {id:2, title:"第二章"} }),直接展开这个对象就行:

case SUCCESS:
  return {
    ...state,
    chapters: {
      ...state.chapters,
      ...action.payload // 直接合并整个payload的章节
    },
    isFetching: false
  };

额外的小提醒

别忘了给你的switch语句加一个default分支,否则当匹配不到任何action类型时,reducer会返回undefined,这会导致Redux状态异常:

switch (action.type) {
  // ... 其他case分支
  default:
    return state;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:30:24