Pure functional isomorphic router based on streams
MIT License
Any rawth.route
function creates an erre stream connected to the main router stream. These sub-streams will be activated only when their paths will match the current router path. For example:
import route, { router } from 'rawth'
route('/users/:user').on.value(({params}) => {
const {user} = params
console.log(`Hello dear ${user}`)
})
// you can dispatch router events at any time
router.push('/users/gianluca')
The argument passed to the subscribed functions is an URL
object having params
as additional property. The params
array will contain all the matched route parameters
import route, { router } from 'rawth'
route('/:group/:user').on.value(({params}) => {
const {group, user} = params
console.log(`Hello dear ${user}, you are part of the ${group} group`)
})
// you can dispatch router events at any time
router.push('/friends/gianluca')
If you want to unsubscribe to a specific route you need just to end the stream
import route from 'rawth'
const usersRouteStream = route('/users/:user')
// subscribe to the stream as many times as you want
usersRouteStream.on.value(({params}) => { /* */ })
usersRouteStream.on.value(({params}) => { /* */ })
usersRouteStream.on.value(({params}) => { /* */ })
// end the stream
usersRouteStream.end()
You can set the base path and override the router default options using the configure
method
import { configure } from 'rawth'
configure({
base: 'https://example.com',
strict: true
})