Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@storeon/router

Package Overview
Dependencies
Maintainers
2
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@storeon/router

Storeon module for URL routing

  • 0.3.1
  • npm
  • Socket score

Version published
Weekly downloads
83
increased by1.22%
Maintainers
2
Weekly downloads
 
Created
Source

Storeon Router

Storeon logo by Anton Lovchikov

Storeon Router which solves the problem of routing your application, providing full control over the route.

It size is 650 bytes (minified and gzipped) and uses Size Limit to control size.

Installation

npm install @storeon/router
# or
yarn add @storeon/router

Usage

If you want to use the router you should import the router.createRouter from @storeon/router and add this module to createStore.

import createStore from 'storeon'
import useStoreon from 'storeon/react'
import router from '@storeon/router'

const store = createStore([
  router.createRouter([
    ['/', () => ({ page: 'home' })],
    ['/blog', () => ({ page: 'blog' })],
    ['/blog/post/*', (id) => ({ page: 'post', id })],
    [
      /^blog\/post\/(\d+)\/(\d+)$/,
      (year, month) => ({ page: 'post', year, month })
    ]
  ])
])

function Root() {
  const { [router.key]: route } = useStoreon(router.key)

  switch (route.match.page) {
    case "home":
      return <Home/>

    case "blog":
      return <Blog/>

    case "post":
      return <Post year={route.match.year} month={route.match.month} id={route.match.id}/>

    default:
      return <NotFound/>
  }
}

store.dispatch(router.navigate, '/')

Usage with Svelte:

If you want to use the router with Svelte you should import the router.createRouter from @storeon/router and add this module to createSvelteStore instead of createStore

store.js
import { createSvelteStore } from "@storeon/svelte";
import { createRouter } from '@storeon/router'

const connect = createSvelteStore([
  createRouter([
    ['/', () => ({ page: 'home' })],
    ['/blog', () => ({ page: 'blog' })],
  ])
])

And use it like:

App.svelte
<script>
  import { connect } from "./store.js";
  import router from "@storeon/router"

  const moduleRouter = connect(router.key)
</script>

You can access the router like default svelte store via $:
{$moduleRouter.match.page}

API

import router from '@storeon/router'

const moduleRouter = router.createRouter([
  [path, callback]
])

Function router.createRouter could have options:

  • path: path name can be a string or RegExp.
  • callback: the callback function must return an object with parameters for this path.

router.key – key for store.

router.navigate – navigation action.

router.changed – change event of pathname.

Add data-ignore-router attribute to the link so that the router ignores it.

Sponsor

Sponsored by Evrone

LICENSE

MIT

FAQs

Package last updated on 06 Feb 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc