api / const
receive
Connects multiple transmitter signals to a single receiver signal.
Connects multiple transmitter signals to a single receiver signal.
Whenever any transmitter changes, the receiver is updated to match that transmitter's current value. If more than one transmitter changes in the same propagation chain, the final receiver value follows effect execution order.
Signature
export const receive = <T>(
receiver: SourceSignal<T>,
...transmittors: Signal<T>[]
): SignalsEffect[] => {
const effects = transmittors.map((transmittor) =>
effect(() => (receiver.value = transmittor.value))
);
return effects;
};
Type Parameters
- The type of value the signals hold
Parameters
receiver: A source signal that will receive updatestransmittors: Multiple signals (source or derived) of the same type
Returns
Array of effects that can be disposed to disconnect the bindings
Remarks
- Each transmitter gets its own effect that updates the receiver
- Transmitters can be source or derived signals
- Receiver must be a source signal
- Passing no transmitters returns an empty effects array
- The receiver remains independently mutable
Examples
const sportsEvent = signal("cricket @ 9am");
const mediaEvent = signal("movie @ 3pm");
const noticeBoard = signal("");
const effects = receive(noticeBoard, sportsEvent, mediaEvent);
sportsEvent.value = "football @ 1pm";
console.log(noticeBoard.value); // "football @ 1pm"
mediaEvent.value = "concert @ 8pm";
console.log(noticeBoard.value); // "concert @ 8pm"
// Manual update still works
noticeBoard.value = "No events";
// Dispose connections
effects.forEach(eff => eff.dispose());
See Also
- transmit - For broadcasting from one transmitter to multiple receivers
- effect - For the underlying effect primitive