У меня есть функция редуктора, который работает на Immutable.js записях Calendar
:неизменные JS: сделать функцию более .. функциональные
const Calendar = new Record({
'events': new List(), // list of Events
});
, который представляет собой список Event
с:
const Event = new Record({
'start': null,
'end': null,
'title': null,
});
I хотите добавить новые события из объектов Javascript в этот список и вернуть новую запись Calendar
, но только в том случае, если в объекте нет объектов:
(state = new Calendar)=> {
const receivedEvent = new Event({
start: <a date>,
end: <another date>,
title: <a string>,
});
let newState;
if (state.get('events').contains(receivedEvent)){
newState = state;
} else {
newState = state
.updateIn(['events'], (events)=> events.push(receivedEvent));
}
return newState;
}
Это лучшее, что я могу сделать прямо сейчас в 4 часа ночи, но это похоже на ужасный подход.
Есть ли способ лучше использовать функциональные парадигмы, такие как предоставленные Immutable для выполнения этой же задачи?
На первый взгляд, похоже, что у вас есть «набор» событий. Если вы измените тип данных, то проще задать вопросы типа 'includes' (или' contains'). –
В вашем редукторе вы можете использовать https://github.com/engineforce/ImmutableAssign, который является легким неизменным помощником, который позволяет продолжить работу с POJO (обычным старым JavaScript-объектом). – engineforce