function LinkToRecoilSnapshot()

in packages/recoil/contrib/uri_persistence/Recoil_Link.js [53:84]


function LinkToRecoilSnapshot({
  uriFromSnapshot,
  snapshot,
  ...anchorProps
}: LinkToSnapshotProps): React.Node {
  const gotoSnapshot = useGotoRecoilSnapshot();
  const {onClick, target} = anchorProps;

  const onClickWrapper = useCallback(
    event => {
      onClick?.(event);
      if (
        !event.defaultPrevented &&
        event.button === 0 && // left-click
        !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) &&
        (!target || target === '_self')
      ) {
        event.preventDefault();
        gotoSnapshot(snapshot);
      }
    },
    [target, onClick, gotoSnapshot, snapshot],
  );

  return (
    <a
      {...anchorProps}
      href={uriFromSnapshot(snapshot)}
      onClick={onClickWrapper}
    />
  );
}