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
},