8.2.3 • Published 5 months ago

inferno-router v8.2.3

Weekly downloads
302
License
MIT
Repository
github
Last release
5 months ago

inferno-router

Inferno Router is a routing library for Inferno. It is a port of react-router 4 (later updated to v5).

Install

npm install inferno-router

Features

Same as react-router v4 (later updated to v5), except react-native support.

See official react-router documentation

Features added from react-router@5:

  • NavLink supports passing function to className-attibute
  • NavLink supports passing function to style-attibute

Features added from react-router@6:

The following features aren't supported yet:

  • download progress support
  • form submission
  • redirect support
  • not exposing response headers, type or status code to render method

Client side usage

import { render } from 'inferno';
import { BrowserRouter, Route, Link, useLoaderData, useLoaderError } from 'inferno-router';

const Home = () => (
  <div>
    <h2>Home</h2>
  </div>
);

const About = (props) => {
  const data = useLoaderData(props);
  const err = useLoaderError(props);

  return (
    <div>
      <h2>About</h2>
      <p>{data?.body || err?.message}</p>
    </div>
  )
};

const Topic = ({ match }) => (
  <div>
    <h3>{match.params.topicId}</h3>
  </div>
);

const Topics = ({ match }) => (
  <div>
    <h2>Topics</h2>
    <ul>
      <li>
        <Link to={`${match.url}/rendering`}>
          Rendering with React
        </Link>
      </li>
      <li>
        <Link to={`${match.url}/components`}>
          Components
        </Link>
      </li>
      <li>
        <Link to={`${match.url}/props-v-state`}>
          Props v. State
        </Link>
      </li>
    </ul>

    <Route path={`${match.url}/:topicId`} component={Topic}/>
    <Route exact path={match.url} render={() => (
      <h3>Please select a topic.</h3>
    )}/>
  </div>
);

const MyWebsite = () => (
  <BrowserRouter>
    <div>
      <ul>
        <li><Link to="/">Home</Link></li>
        <li><Link to="/about">About</Link></li>
        <li><Link to="/topics">Topics</Link></li>
      </ul>
      <hr/>
      <Route exact path="/" component={Home}/>
      <Route path="/about" component={About} loader={() => fetch(new URL('/api/about', BACKEND_HOST))} />
      <Route path="/topics" component={Topics}/>
    </div>
  </BrowserRouter>
);

// Render HTML on the browser
render(<MyWebsite />, document.getElementById('root'));

Sever side usage with Koa

First, let's create our component to render boilerplate HTML, header, body etc.

import Koa from 'koa';
import { renderToString } from 'inferno-server';
import { Switch, StaticRouter, Route } from 'inferno-router';

const app = new Koa();

function Index({children}) {
  return (
    <html>
    <head>
      <meta charSet="utf-8"/>
      <title>Inferno</title>
    </head>
    <body>
    <div id="app">{children}</div>
    </body>
    </html>
  )
}

// Example routes
function Home() {
  return <div>Welcome Home!</div>
}

function Foo() {
  return <span>Bar</span>
}

function NotFound() {
  return <h2>404</h2>;
}

const routes = (
  <Switch>
    <Route exact path="/" component={Home}/>
    <Route exact path="/demo" component={Foo}/>
    <Route path="*" component={NotFound}/>
  </Switch>
);

// Server-side render
async function render(ctx, next) {
  const context = {};
  const content = renderToString(
    <StaticRouter location={ctx.url} context={context}>
      <Index hostname={ctx.hostname}>
        {routes}
      </Index>
    </StaticRouter>
  );

  // This will contain the URL to redirect to if <Redirect> was used
  if (context.url) {
    return ctx.redirect(context.url);
  }

  ctx.type = 'text/html';
  ctx.body = '<!DOCTYPE html>\n' + content;
  await next();
}

// Add infero render as middleware
app.use(render);


app.listen(8080, function () {
  console.log('Listening on port ' + 8080);
});

Differences with React-Router v4

  • No "official" react-native support.
  • There's no inferno-router-dom, all functionality is inside inferno-router
8.2.3

5 months ago

8.2.2

10 months ago

8.2.1

11 months ago

8.2.0

11 months ago

8.1.1

1 year ago

8.1.0

1 year ago

8.0.6

1 year ago

8.0.5

1 year ago

8.0.4

2 years ago

8.0.0-alpha.6

2 years ago

8.0.1

2 years ago

8.0.0

2 years ago

8.0.3

2 years ago

8.0.2

2 years ago

8.0.0-alpha.5

2 years ago

8.0.0-alpha.4

2 years ago

8.0.0-alpha.3

2 years ago

8.0.0-alpha.2

2 years ago

7.4.11

2 years ago

8.0.0-alpha.1

3 years ago

8.0.0-alpha.0

3 years ago

7.4.10

3 years ago

7.4.9

3 years ago

7.4.8

3 years ago

7.4.7

3 years ago

5.6.2

3 years ago

7.4.6

4 years ago

7.4.4

4 years ago

7.4.5

4 years ago

7.4.3

4 years ago

7.4.2

4 years ago

7.4.1

4 years ago

7.4.0

4 years ago

7.3.3

4 years ago

7.3.2

5 years ago

7.3.1

5 years ago

7.3.0

5 years ago

7.2.1

5 years ago

7.2.0

5 years ago

7.1.13

5 years ago

7.1.12

5 years ago

7.1.11

5 years ago

7.1.10

5 years ago

7.1.9

5 years ago

7.1.8

5 years ago

7.1.7

5 years ago

7.1.6

5 years ago

7.1.5

5 years ago

7.1.4

5 years ago

7.1.3

5 years ago

7.1.2

5 years ago

7.1.1

5 years ago

7.1.0

5 years ago

7.0.5

5 years ago

7.0.4

5 years ago

7.0.2

5 years ago

7.0.1

5 years ago

7.0.0

5 years ago

6.3.1

5 years ago

6.3.0

5 years ago

6.2.1

5 years ago

6.2.0

5 years ago

6.1.5

5 years ago

6.1.4

6 years ago

6.1.3

6 years ago

6.1.2

6 years ago

6.1.1

6 years ago

6.1.0

6 years ago

6.0.3

6 years ago

6.0.2

6 years ago

6.0.1

6 years ago

6.0.0

6 years ago

6.0.0-rc.5

6 years ago

6.0.0-rc.3

6 years ago

6.0.0-rc.1

6 years ago

6.0.0-rc.0

6 years ago

6.0.0-alpha.3

6 years ago

6.0.0-alpha.2

6 years ago

6.0.0-alpha.1

6 years ago

5.6.1

6 years ago

5.6.0

6 years ago

6.0.0-alpha.0

6 years ago

5.5.0

6 years ago

5.4.2

6 years ago

5.4.1

6 years ago

5.4.0

6 years ago

5.3.0

6 years ago

5.2.0

6 years ago

5.1.1

6 years ago

5.1.0

6 years ago

5.0.6

6 years ago

5.0.5

6 years ago

5.0.4

6 years ago

5.0.3

6 years ago

5.0.2

6 years ago

5.0.1

6 years ago

5.0.0

6 years ago

5.0.0-2

6 years ago

5.0.0-1

6 years ago

5.0.0-0

6 years ago

4.0.8

6 years ago

4.0.7

6 years ago

4.0.6

6 years ago

4.0.5

6 years ago

4.0.4

6 years ago

4.0.3

6 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

4.0.0-21

6 years ago

4.0.0-20

6 years ago

4.0.0-19

6 years ago

4.0.0-18

6 years ago

4.0.0-17

6 years ago

4.0.0-16

6 years ago

4.0.0-15

6 years ago

4.0.0-14

6 years ago

4.0.0-13

6 years ago

4.0.0-12

6 years ago

4.0.0-11

6 years ago

4.0.0-10

6 years ago

4.0.0-9

6 years ago

4.0.0-8

6 years ago

4.0.0-7

6 years ago

4.0.0-6

6 years ago

4.0.0-5

6 years ago

4.0.0-4

6 years ago

4.0.0-3

6 years ago

4.0.0-2

6 years ago

4.0.0-1

6 years ago

4.0.0-0

6 years ago

3.10.1

7 years ago

3.10.0

7 years ago

3.9.0

7 years ago

3.8.2

7 years ago

3.8.1

7 years ago

3.8.0

7 years ago

3.7.1

7 years ago

3.7.0

7 years ago

3.6.4

7 years ago

3.6.3

7 years ago

4.0.0-alpha1

7 years ago

3.6.1

7 years ago

3.6.0

7 years ago

3.5.4

7 years ago

3.5.3

7 years ago

3.5.2

7 years ago

3.5.1

7 years ago

3.5.0

7 years ago

3.4.4

7 years ago

3.4.3

7 years ago

3.4.2

7 years ago

3.4.0

7 years ago

3.3.1

7 years ago

3.3.0

7 years ago

3.2.2

7 years ago

3.2.1

7 years ago

3.2.0

7 years ago

3.1.2

7 years ago

3.1.1

7 years ago

3.1.0

7 years ago

3.0.6

7 years ago

3.0.5

7 years ago

3.0.4

7 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.0.0

7 years ago

1.6.2

7 years ago

1.6.1

7 years ago

1.6.0

7 years ago

1.5.6

7 years ago

1.5.5

7 years ago

1.5.4

7 years ago

1.5.3

7 years ago

1.5.2

7 years ago

1.5.1

7 years ago

1.4.2

7 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.3.0-rc.10

7 years ago

1.3.0-rc.9

7 years ago

1.3.0-rc.8

7 years ago

1.3.0-rc.7

7 years ago

1.3.0-rc.6

7 years ago

1.3.0-rc.5

7 years ago

1.3.0-rc.4

7 years ago

1.3.0-rc.3

7 years ago

1.3.0-rc.2

7 years ago

1.3.0-rc.1

7 years ago

1.3.0-rc.0

7 years ago

1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0-beta45

7 years ago

1.0.0-beta44

7 years ago

1.0.0-beta43

7 years ago

1.0.0-beta42

7 years ago

1.0.0-beta41

7 years ago

1.0.0-beta40

7 years ago

1.0.0-beta39

7 years ago

1.0.0-beta38

7 years ago

1.0.0-beta37

7 years ago

1.0.0-beta36

7 years ago

1.0.0-beta35

7 years ago

1.0.0-beta34

7 years ago

1.0.0-beta33

7 years ago

1.0.0-beta32

7 years ago

1.0.0-beta31

7 years ago

1.0.0-beta30

7 years ago

1.0.0-beta29

7 years ago

1.0.0-beta28

7 years ago

1.0.0-beta27

7 years ago

1.0.0-beta26

7 years ago

1.0.0-beta25

7 years ago

1.0.0-beta24

7 years ago

1.0.0-beta23

7 years ago

1.0.0-beta22

7 years ago

1.0.0-beta21

7 years ago

1.0.0-beta20

7 years ago

1.0.0-beta19

7 years ago

1.0.0-beta18

7 years ago

1.0.0-beta17

7 years ago

1.0.0-beta16

7 years ago

1.0.0-beta15

7 years ago

1.0.0-beta14

7 years ago

1.0.0-beta13

7 years ago

1.0.0-beta12

7 years ago

1.0.0-beta11

7 years ago

1.0.0-beta10

7 years ago

1.0.0-beta9

7 years ago

1.0.0-beta8

7 years ago

1.0.0-beta7

7 years ago

1.0.0-beta6

8 years ago

1.0.0-beta5

8 years ago

1.0.0-beta4

8 years ago

1.0.0-beta3

8 years ago

1.0.0-beta2

8 years ago

1.0.0-beta1

8 years ago

1.0.0-alpha11

8 years ago

1.0.0-alpha10

8 years ago

1.0.0-alpha9

8 years ago

1.0.0-alpha8

8 years ago

0.7.27

8 years ago

0.8.0-alpha3

8 years ago

0.8.0-alpha2

8 years ago

0.7.26

8 years ago

0.7.25

8 years ago

0.7.24

8 years ago

0.7.23

8 years ago

0.7.22

8 years ago

0.7.21

8 years ago

0.7.20

8 years ago

0.7.17

8 years ago

0.7.16

8 years ago

0.7.15

8 years ago

0.7.14

8 years ago

0.7.13

8 years ago

0.7.12

8 years ago

0.7.11

8 years ago

0.7.10

8 years ago