reactjs - Dispatch 覆盖 React Js 中的完整存储
问题描述
我有一个应用程序存储来自不同组件的输入数据。另外,我正在使用 useReducer。当我进行调度dispatch({type: "ADD_SONG", payload})
时,我的商店状态正在改变,从
fruits: (1) [{…}]
people: (3) [{…}, {…}, {…}]
new_fruit: {}
new_car: {}
song_list: (2) [{…}, {…},{…}]
new_song: {}
至:
song_list: (3) [{…}, {…}, {…}]
__proto__: Object
上面的代码我进入控制台。动作创建者:
dispatch({type: "ADD_SONG", payload})
减速器:
case 'ADD_SONG': {
return {
...state,
new_song: {
songId: payload.songId,
name: payload.name,
},
}
}
为什么,当我派遣时,我会覆盖整个商店?可能是什么问题呢?
解决方案
这可能是问题所在:
在你处理状态的减速器中,确保你不返回只有song_list
.
你可能有这样的东西
const yourReducer = (state, action) => {
switch(action.type) {
case 'SOMETYPE':
return { song_list: action.payload };
}
}
那应该是
const yourReducer = (state, action) => {
switch(action.type) {
case 'SOMETYPE':
return { ...state, song_list: action.payload };
}
}
推荐阅读
- c# - 即使我正确创建变量,尝试从类创建类型也会导致错误
- css-selectors - 是否有派生 HTML 自定义元素的 CSS 选择器?
- r - 使用 tidyverse 将分组数据中的缺失值替换为非值
- multithreading - 如何使用不实现 Copy 的参数每 X 秒调用一次函数?
- python - PyQt:如何拉伸 QGraphicsView 和 QGraphicsScene 小部件的宽度和高度?
- ffmpeg - ffmpeg 仅添加视频缩略图
- javascript - 带 JS 的 TypeORM
- python - 为什么要在同一个类中创建并返回一个类的实例?
- c - 为什么在函数声明中使用 const
- docker - Jenkins Pipeline docker.withRegistry() push 导致无限循环