permalink.js (995B)
- import React from 'react';
 - import PropTypes from 'prop-types';
 - export default class Permalink extends React.PureComponent {
 - static contextTypes = {
 - router: PropTypes.object,
 - };
 - static propTypes = {
 - className: PropTypes.string,
 - href: PropTypes.string.isRequired,
 - to: PropTypes.string.isRequired,
 - children: PropTypes.node,
 - onInterceptClick: PropTypes.func,
 - };
 - handleClick = e => {
 - if (this.props.onInterceptClick && this.props.onInterceptClick()) {
 - e.preventDefault();
 - return;
 - }
 - if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {
 - e.preventDefault();
 - this.context.router.history.push(this.props.to);
 - }
 - }
 - render () {
 - const { href, children, className, onInterceptClick, ...other } = this.props;
 - return (
 - <a target='_blank' href={href} onClick={this.handleClick} {...other} className={`permalink${className ? ' ' + className : ''}`}>
 - {children}
 - </a>
 - );
 - }
 - }