@mazzard/react-link

1.1.2 • Public • Published

#@mazzard/react-link

Install

npm i @mazzard/react-link

Link helps you to use History API, it renders a element.

props

to

default: '/'

Use to attribute like href.

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class Test extends React.Component {
  render () {
    return (
      <>
        <Link>
          Home
        </Link>
        {' | '}
        <Link to='/test1'>
          test1
        </Link>
        {' | '}
        <Link to='/test2'>
          test2
        </Link>
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

classNames

Use classNames to pass class name for active link

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

const classNames = {
  root: 'link',
  active: 'link_active'
}

class Test extends React.Component {
  render () {
    return (
      <>
        <Link classNames={classNames}>
          Home
        </Link>
        {' | '}
        <Link to='/test1' classNames={classNames}>
          test1
        </Link>
        {' | '}
        <Link to='/test2' classNames={classNames}>
          test2
        </Link>
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

exact

default: false

Use exact to pass active class name for a link which is equal to URL

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

const classNames = {
  active: 'link_active'
}

class Test extends React.Component {
  render () {
    return (
      <>
        <Link classNames={classNames} exact>
          Home
        </Link>
        {' | '}
        <Link to='/test1' classNames={classNames}>
          test1
        </Link>
        {' | '}
        <Link to='/test2' classNames={classNames}>
          test2
        </Link>
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

scrollTo

default: 0

you may use a number to scroll a page at pixels

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class Test extends React.Component {
  render () {
    return (
      <>
        <div style={{height: '700px'}} />
        <Link>
          Home
        </Link>
        {' | '}
        <Link to='/test' scrollTo={700} id='test'>
          test
        </Link>
        <div style={{height: '1700px'}} />
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

or you may use CSS selector of an element which should be visible

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class Test extends React.Component {
  render () {
    return (
      <>
        <div style={{height: '700px'}} />
        <Link>
          Home
        </Link>
        {' | '}
        <Link to='/test' scrollTo='#test' id='test'>
          test
        </Link>
        <div style={{height: '1700px'}} />
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

scrollTimeout

default: 0

you may add timeout of the scrolling

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class Test extends React.Component {
  render () {
    return (
      <>
        <div style={{height: '700px'}} />
        <Link>
          Home
        </Link>
        {' | '}
        <Link to='/test' scrollTo={700} scrollTimeout={1000}>
          test
        </Link>
        <div style={{height: '1700px'}} />
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

extension

You may extend Link to set default class names

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class A extends Link {
  className = 'link'
  classNames = {
    active: 'link_active'
  }
}

class Test extends React.Component {
  render () {
    return (
      <>
        <A>
          Home
        </A>
        {' | '}
        <A to='/test1'>
          test1
        </A>
        {' | '}
        <A to='/test2'>
          test2
        </A>
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

You may extend Link to set default props

import React from 'react'
import ReactDom from 'react-dom'
import Link from '@mazzard/react-link'

class A extends Link {
  static props = {
    to: '/home'
  }
}

class Test extends React.Component {
  render () {
    return (
      <>
        <A>
          Home
        </A>
        {' | '}
        <A to='/test1'>
          test1
        </A>
        {' | '}
        <A to='/test2'>
          test2
        </A>
      </>
    )
  }
}

ReactDom.render(<Test />, document.getElementById('root'))

Package Sidebar

Install

npm i @mazzard/react-link

Weekly Downloads

0

Version

1.1.2

License

MIT

Unpacked Size

8 kB

Total Files

4

Last publish

Collaborators

  • deight