Tengo un selector que se ve así:
export const shipmentsRejectedSelector: ( state: AppStateType, departmentIds: List<number>, currentDate: DateTime, toDate: DateTime ) => List<Shipment> = createImmutableEqualSelector( shipmentsByDepartmentIdsAndDate, packageEvents, (shipments, events) => shipments .valueSeq() .filter(s => s.get('state') == EventType.REJECTED)) ?.toList() || List() ) Dado que packageEvents devuelve todos los events independientemente de los envíos de los que forme parte, me gustaría devolver solo los eventos que forman parte de los shipmentsByDepartmentIdsAndDate devueltos por el selector shippingsByDepartmentIdsAndDate. ¿Cómo puedo pasar los ID de shipmentIds a un nuevo selector que obtenga solo los eventos que tienen los ID de shipmentIds que estoy pasando? Algo como esto por ejemplo:
export const shipmentsRejectedSelector: ( state: AppStateType, departmentIds: List<number>, currentDate: DateTime, toDate: DateTime ) => List<Shipment> = createImmutableEqualSelector( shipmentsByDepartmentIdsAndDate, shipments => packageEvents(shipments), (shipments, events) => shipments .valueSeq() .filter(s => s.get('state') == EventType.REJECTED)) ?.toList() || List() )En su código, no ha mostrado cómo está utilizando el objeto de event en resultFunc (combinador). Así que supongo que desea agregar eventos a los envíos antes de filtrarlos.
Una forma podría ser usar los eventos del packageEvents en el combinador:
const shipmentsByDepartmentIdsAndDate = ...; const shipmentWithPackageEvents = createSelector(shipments, (shipments)=>{//return shipments along with the corresponding events}); const shipmentsRejectedSelector = createSelector( shipmentsByDepartmentIdsAndDate, (shipments) => shipmentWithPackageEvents(shipments).valueSeq() .filter(s => s.get('state') == EventType.REJECTED)) ?.toList() || List() )O podemos usar directamente shippingWithPackageEvents:
const shipmentsByDepartmentIdsAndDate = ...; const shipmentWithPackageEvents = createSelector(shipments, (shipments)=>{//return shipments along with the corresponding events}); const shipmentsRejectedSelector = createSelector( shipmentWithPackageEvents, (shipments) => shipments.valueSeq() .filter(s => s.get('state') == EventType.REJECTED)) ?.toList() || List() )