Я хочу прослушать изменение определенных элементов списка. Я использовал reaction
в своем списке и отфильтровал свой список, чтобы получить определенные элементы, которые мне нужно прослушать, но reaction
срабатывает, когда в список добавляется новый новый элемент (из моего отфильтрованного списка)
Это мой код:
const MyCustomModel = types
.model({
id: types.identifier,
start: types.Date,
end: types.Date,
});
const MyStore = types
.model({
id: types.identifier,
items: types.map(MyCustomModel),
})
.views(self => ({
get itemsArray() {
return Array.from(self.items.values());
},
}))
.actions(self => {
return {
setListener(start: Date, end: Date) {
myReactionDisposer = reaction(
() =>
self.itemsArray
.filter(
item =>
item.end.getTime() >= self.start.getTime() &&
item.start.getTime() <= self.end.getTime(),
)
.map(item=> item),
() => {
console.log('my reaction fires!');
// other codes
},
);
},
});
Например, если я слушаю диапазон от 2020-09-20 00:00:00
до 2020-09-21 00:00:00
и добавляю новый элемент с начальным и конечным значением в другой день {start: '2020-09-15 10:00:00' , end: '2020-09-15 16:20:00'}
, срабатывает реакция!