Skip to content

Simple handler for hash router(including its interceptor).

Notifications You must be signed in to change notification settings

iakoug/hash-router

Repository files navigation

Hash router

支持常规跳转,路由拦截,路由参数持久化

📦 Release package

npm login

# publish
npm run deploy

🔧 Usage

Install

npm i @justwink/crisp --save

Init

import Router from '@justwink/crisp'

const router = new Router()

Navigate

router.push('#/page')
router.push({path: '#/page'})
router.replace('#/page')
router.replace({path: '#/page'})
router.go(2)
router.back()

// 默认始终携带初始化时配置的持久化参数,使用 needPersistentParams=false 取消携带
router.push({
  path: 'https://www.baidu.com',
  needPersistentParams: false,
})

// 强制跳转外部页面避免被react-router重定向
router.push({
  path: 'https://www.baidu.com',
  force: true,
  // 是否携带持久化页面到外部
  needPersistentParams: false,
})

// 携带参数
router.push({
  path: '#/page',
  query: {
    name: 'justwink',
    gender: 'male',
  },
})

Page infos

const page = router.page
// from: "#/page"
// query: "?name=12331&age=eeeeee"
// to: "#/pageB"

Persistent params

Init persistent params
// 初始化持久化参数
new bankerRouter({
  persistentParamsList: ['a', 'b', 'c'],
})
Use persistent params
// Get
const {param} = router.getCurrentParams()
// Or
const param = router.getCurrentParams('param')

// Set
router.setPersistentOption({k: 'v'})

// Delete
router.deletePersistentKey('k')

// Clear
router.removePersistentOption()

Interceptor

分为前置和后置

new bankerRouter({
  // 前置
  beforeEnter(config: any, next: Function) {
    // Your business

    next()
  },
  // 后置
  afterEach() {
    // your business
  },
}),

Plugin mode

import Router from '@justwink/crisp'

Router.use(instance => {
  instance.bark = () => console.log('Make some noise')
})

const crisp = new Router()

crisp.bark() // Make some noise

😈 Extra

  • 路由跳转根据/(._#\/[^\?]+)(\??.+)?/匹配
  • pushreplace 方法会触发拦截器

About

Simple handler for hash router(including its interceptor).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published