From fb6b9f3a0609c8ef340e34194fe58d5e12c592fd Mon Sep 17 00:00:00 2001 From: Eric Baer Date: Mon, 29 Aug 2016 17:58:08 -0700 Subject: [PATCH] Add onClick handler --- src/link.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/link.js b/src/link.js index adecef31..28764384 100644 --- a/src/link.js +++ b/src/link.js @@ -6,13 +6,14 @@ import React, { Component, PropTypes } from 'react'; import { PUSH, REPLACE } from './action-types'; type Props = { + children: ReactPropTypes.node, + className: string, href: string | LocationDescriptor, - replaceState: bool, + onClick: EventHandler, persistQuery: bool, - target: string, - className: string, + replaceState: bool, style: Object, - children: ReactPropTypes.node + target: string }; const LEFT_MOUSE_BUTTON = 0; @@ -59,7 +60,9 @@ const isNotLeftClick = e => e.button && e.button !== LEFT_MOUSE_BUTTON; const hasModifier = e => Boolean(e.shiftKey || e.altKey || e.metaKey || e.ctrlKey); -const onClick = ({e, target, location, replaceState, router}) => { +const handleClick = ({e, target, location, replaceState, router, onClick}) => { + if (onClick) { onClick(e); } + if (hasModifier(e) || isNotLeftClick(e) || target) { return; } @@ -81,11 +84,12 @@ const Link = ( } ) => { const { + children, href, - target, + onClick, persistQuery, replaceState, - children, + target, ...rest } = props; @@ -104,12 +108,13 @@ const Link = ( return ( onClick({ + onClick={e => handleClick({ e, - target, location, + onClick, replaceState, - router + router, + target })} {...rest} >