2016-11-16 4 views
0

У меня есть массив уведомлений в качестве опоры для моего компонента NotificationCenter.TypeScript Redux React: как пройти через дочерние компоненты

Когда пользователь нажимает на любое уведомление (или на кнопку «Отметить все как чтение»), они должны быть отмечены как «isRead = true», а затем повторно отобразить его другим цветом в пользовательском интерфейсе.

Я уже сделал все (действия, события и т. Д.), Но теперь мне нужно вызвать редуктор, чтобы моя опознавательная подсказка могла быть повторно отображена.

Это мой код до сих пор:

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

"state.notifications" моя Notification проп со всеми доступными уведомлений.

«action.payload» - это строковый массив, содержащий идентификаторы уведомлений, которые должны соответствовать, а затем изменить на «notification.isRead = true».

Основная проблема, с которой я столкнулся, заключается в том, что я не могу изменить список уведомлений, и я не совсем уверен, как работает .map().

Может ли кто-нибудь дать мне подсказку? Надеюсь, моя проблема ясна.

Спасибо!

ответ

1

Вы можете переключать isRead в зависимости от того, является ли идентификатор текущего уведомления в 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? true: n.IsRead' –

Смежные вопросы