Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有React和Redux的扩展运算符错误_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 带有React和Redux的扩展运算符错误

Javascript 带有React和Redux的扩展运算符错误,javascript,reactjs,redux,Javascript,Reactjs,Redux,我对反应和重复是相当陌生的。我正在处理一个减速机,在尝试使用扩展运算符时遇到编译错误 export default function chaptersReducer( state = { chapters: {}, isFetching: false, error: false }, action = {}, ) { switch (action.type) { case REQUEST: return { ...state, isFetching: true,

我对反应和重复是相当陌生的。我正在处理一个减速机,在尝试使用扩展运算符时遇到编译错误

export default function chaptersReducer(
  state = { chapters: {}, isFetching: false, error: false },
  action = {},
) {
  switch (action.type) {
    case REQUEST:
      return { ...state, isFetching: true, error: false };
    case SUCCESS:
       return {
         ...state,
         chapters: {
           ...state.chapters,
           action.payload
         },
         isFetching: false
       };
    case FAILURE:
      return { ...state, isFetching: false, error: true };
    default:
      return state;
  }
}
我得到的具体错误是这个。(成功案例中)

也许我遗漏了一些非常明显的东西,但有人能帮我弄清楚到底发生了什么吗

编辑:我正在使用createreact应用程序、redux和react redux

chapters: {
    ...state.chapters,
    action.payload
},
我不太确定你要干什么

chapters: {
    ...state.chapters,
    ...action.payload
},
也许吧

不指定键(
{someProp}
)是
{someProp:someProp}
的缩写,需要简单的键(即
操作。有效负载
不起作用)

不管怎样,你都需要一把钥匙

chapters: {
    ...state.chapters,
    chapterN: action.payload
},
或者完全取代

chapters: action.payload
编辑:我看到你的评论

给定
action.payload
=>
{someId:{…somepayload…}}

chapters: {
    ...state.chapters,
    ...action.payload
},
可能很接近你想要的。如果您还将
mangaId
作为操作的一个字段传递,即
{id:mangaId,payload:{…some payload…}}
,那么您需要

chapters: {
    ...state.chapters,
    [action.mangaId]: action.payload
},

为什么要使用
…state.chapters
?不应该仅仅是
…state
state.chapters
。为什么在
章节
上使用扩展运算符?来自我的API的数据的结构类似于
{mangaId:[{chapterObjects}]}
。我的意图是如果章节是空的,添加有效负载,如果mangaIds冲突,覆盖旧数据。也许我误解了如何正确地做到这一点?更正:如果章节[mangaId]不存在,添加有效负载,如果存在,覆盖之前的MangaidsHanks数组,我的目标是第二块代码。你能帮我核实一下这是否符合我的意愿吗?目标:如果章节[mangaId]为空,则添加有效负载,如果mangaId冲突,则覆盖旧数据。您是正确的<代码>{manga2:“manga1”,…{manga2:“manga2”}->
{manga2:“manga2”}
chapters: {
    ...state.chapters,
    [action.mangaId]: action.payload
},