我有一系列通知作为我的NotificationCenter组件的支柱。
当用户点击任何通知(或在"标记所有为阅读"按钮上)时,应将其标记为' isRead = true'然后在UI上使用另一种颜色重新渲染它。
我已经完成了所有操作(操作,事件等),但现在我需要触发Reducer,以便重新呈现我的通知道具。
到目前为止,这是我的代码:
if (isType(action, ActionTypes.MarkNotificationsAsRead)) {
return Object.assign({}, state, {
notifications: state.notifications.map(n => action.payload.<<HELP>>)
} as INotificationCentreState);
&#34; state.notifications&#34;是我的通知道具,包含所有可用的通知。
&#34; action.payload&#34;是字符串数组,其中包含我应该匹配的通知的ID,然后修改为&#39; notification.isRead = true&#39;。
我在这里遇到的主要问题是我无法改变我的通知列表,而且我不完全确定.map()是如何工作的。
任何人都可以给我一个提示吗?我希望我的问题很清楚。
谢谢!
答案 0 :(得分:1)
您可以切换isRead
,具体取决于当前通知的ID是否在action.payload
state.notifications.map(n => Object.assign({}, n, {isRead: action.payload.indexOf(n.id) > -1}))