Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/frejs/use-routes

:triangular_flag_on_post: A router hook for not only react hooks API but also fre
https://github.com/frejs/use-routes

react react-rooter userouter vue-router

Last synced: about 2 months ago
JSON representation

:triangular_flag_on_post: A router hook for not only react hooks API but also fre

Awesome Lists containing this project

README

        

# use-routes

> 800 Bytes router hook for Fre and React

[![](https://img.shields.io/npm/v/use-routes.svg?style=flat)](https://npmjs.com/package/use-routes)
[![](https://img.shields.io/npm/dm/use-routes.svg?style=flat)](https://npmjs.com/package/use-routes)
[![](https://img.shields.io/bundlephobia/minzip/use-routes.svg?style=flat)](https://bundlephobia.com/result?p=use-routes)

### Use

```javascript
import { h, render } from 'fre'
import { useRoutes, push } from 'use-routes'

const routes = {
'/': () => (


home


push('/home/jack')}>Go jack

),
'/home/:id': ({ id }) => (

{id}


push('/')}>Go home

),
}

const App = () => useRoutes(routes)

render(, document.getElementById('root'))
```

以上,首先定义一个路由的对象,key 为正则路径,value 为组件

只 `history` 模式

### React

use-routes 同时适用于 fre 和 react,但默认是服务于 fre 的

如果想要用于 react,可以通过 webpack 配置别名

```js
resolve: {
alias: {
'fre': 'react'
}
}
```
```js
import React from 'react'
import { useRoutes } from 'use-routes'

function App(){
const result = useRoutes(routes)
return result ||
}
```

#### useRoutes

```JSX
function App(){
const result = useRoutes(routes)
return result ||
}
```

`useRoutes` 返回一个组件,这个组件会根据 `pathname` 和 routes 的 key 匹配

如果匹配不到,可以事先准备一个全局的 404 组件 √

#### redirect

重定向,只需要将 routes 对象的 value 变成需要重定向的 路径字符串 即可

```jsx
const routes = {
'/': '/home',
'/home': Home,
}
```

如上,当匹配到跟路径,会跳转到 home 路径,并渲染 home 组件

#### A link

方便跳转,默认也对外暴露了一个 A 组件,作用和 Link 组件一样:

```JSX
Go jack
```

标签属性和 a 标签一样,只是默认做了阻止冒泡

#### License

_MIT ©132yse, inspired by routerhook_