2016-11-16 24 views
0

我有一个Notifications数组作为我的NotificationCenter组件的道具。TypeScript Redux React:如何遍历组件子项

当用户点击任何通知(或“标记为已读”按钮)时,应将其标记为“isRead = true”,然后在UI上用另一种颜色重新渲染。

我已经做了一切(动作,事件等),但现在我需要触发Reducer,以便我的Notifications道具可以重新渲染。

这是我到目前为止的代码:

if (isType(action, ActionTypes.MarkNotificationsAsRead)) { 
    return Object.assign({}, state, { 
     notifications: state.notifications.map(n => action.payload.<<HELP>>) 
    } as INotificationCentreState); 

“state.notifications”是我通知道具与所有可用的通知。

“action.payload”是字符串数组,包含我应该匹配的通知的ID,然后修改为'notification.isRead = true'。

我在这里遇到的主要问题是,我无法改变我的通知列表,并且我不完全确定.map()的工作方式。

任何人都可以给我一个提示吗?我希望我的问题清楚。

谢谢!

回答

1

你可以切换isRead取决于当前的通知的ID是否在action.payload

state.notifications.map(n => Object.assign({}, n, {isRead: action.payload.indexOf(n.id) > -1})) 
+0

谢谢!!我只需要在最后添加一个条件,因为它正在切换IsRead属性,但它起到了魅力的作用! 'IsRead:action.payload.indexOf(n.Id)> -1?真:n.IsRead' –