0.1.20 • Published 6 years ago

react-context-api-router v0.1.20

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

React Context Router

Simple Implementation of a Context-API-compatible router

🚧EXPERIMENTAL: This Router is currently under development! Help is appreciated 🚧

Components:

Uses the following props:

  • props.authRedirect controls the flow. It is NOT the same thing as an isAuthenticated flag. You should still maintain an isAuthenticated flag in your application
  • props.protectedRoute signals the redirect component to enable/disable use of props.authRedirect

*

Requires:

  • props.errorPath
  • props.authRedirect

Usage:

Sample implementation:

index.js

import React from 'react'
import ReactDOM from 'react-dom'
import { App } from './App'
import { RoutingProvider } from './RouterComponents'

ReactDOM.render(
  <RoutingProvider>
    <App />
  </RoutingProvider>,
  document.getElementById('root')

App.jsx

import React from 'react'
//
import { Route, Link } from './RouterComponents'
//
import { Test1, Test2, Error } from './Test1'
export class App extends React.Component {
  constructor() {
    super()
    this.state = { fakeError: false }
  }
  toggle = () => {
    this.setState({ fakeError: !this.state.fakeError })
  }
  render() {
    return (
      <div>
        <header>
          <Link path="/">Test1</Link>
          <Link path="/test">Test2</Link>
        </header>
        <Route
          path="/"
          component={Test1}
          toggle={this.toggle}
          fauxError={this.state.fakeError}
        />
        <Route path="/test" component={Test2} />
        <Route
          path="/error"
          component={Error}
          toggle={this.toggle}
          fauxError={this.state.fakeError}
        />
      </div>
    )
  }
}

Test Routes

import React from 'react'
import { Redirect, Link } from './RouterComponents'
//
export const Test1 = props => (
  <div>
    <h1>Path: {props.path}</h1>
    <h1>Path: {props.fauxError}</h1>
    <button onClick={props.toggle}>Redirect</button>
    {props.fauxError ? <Redirect path="/error" /> : ''}
  </div>
)
//
export const Test2 = props => (
  <div>
    <h2>Path: {props.path}</h2>
  </div>
)

export const Error = props => (
  <div>
    <h1>Path: {props.path}</h1>
    <h1>404</h1>
    <button onClick={props.toggle}>
      <Link path="/">Go Home</Link>
    </button>
    {console.log(props.fauxError)}
  </div>
)

To Do:

  • URL Params
  • Nested Routes?

Credits:

Inspired by Steven Koch

0.1.20

6 years ago

0.1.19

6 years ago

0.1.18

6 years ago

0.1.17

6 years ago

0.1.16

6 years ago

0.1.15

6 years ago

0.1.14

6 years ago

0.1.13

6 years ago

0.1.12

6 years ago

0.1.11

6 years ago

0.1.10

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago