api / const

receive

Connects multiple transmitter signals to a single receiver signal.

Source: src/api/connectors.ts

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 updates
  • transmittors: 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