【发布时间】:2021-04-06 11:56:45
【问题描述】:
我在使用 React 和 Redux 时遇到问题,我想在这里找到解决方案……在我的应用程序中,我在加载页面 componentDidMount 时有一个函数,该函数调用了一个列出我页面上图像的函数。我也有一个调用相同功能的按钮。
我的问题:当我单击按钮时,虽然我已经有了显示图像的列表,但我有两次相同的列表,如果再次单击,则会添加相同的新图像。只有当我重新加载页面时,一切都会恢复到它开始的方式,我徒劳地搜索,Redux 保留数据并在每次调用时添加相同的数据,除非我们重新加载页面。
case FETCH_GALLERY_SUCCESS:
return {
...state,
loading: false,
// stories: state.stories.concat(action.payload),
stories: [...state.stories, ...action.payload],
currentPage: action.currentPage,
totalPages: action.totalPages,
totalStories: action.totalStories,
error: ""
}
我终于找到了这个:
case FETCH_GALLERY_SUCCESS:
return {
...state,
loading: false,
stories: [...state.stories, ...action.payload].filter(
(storie, index) => index === [...state.stories, ...action.payload].findIndex(
elem => elem.id === storie.id && elem.id === storie.id
)
),
currentPage: action.currentPage,
totalPages: action.totalPages,
totalStories: action.totalStories,
error: ""
}
【问题讨论】:
-
是包含图像的
stories对象吗?如果是这样,似乎每次您发送FETCH_GLLERY_SUCCESS时,您都会一遍又一遍地添加相同的故事。在添加故事之前,您可能需要检查冲突。或者,也许您可以只将故事设置为 action.payload 就可以了?stories: action.payload
标签: reactjs react-redux