https://github.com/sonofmagic/weapp-navigate
weapp-navigate
https://github.com/sonofmagic/weapp-navigate
Last synced: 17 days ago
JSON representation
weapp-navigate
- Host: GitHub
- URL: https://github.com/sonofmagic/weapp-navigate
- Owner: sonofmagic
- License: mit
- Created: 2023-07-08T16:14:46.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-14T17:26:55.000Z (5 months ago)
- Last Synced: 2024-11-18T09:46:03.539Z (5 months ago)
- Language: TypeScript
- Size: 521 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# weapp-navigate
[](https://codecov.io/gh/sonofmagic/weapp-navigate)
> 小程序框架路由跳转方法
- [weapp-navigate](#weapp-navigate)
- [Features](#features)
- [Usage](#usage)
- [基础使用](#基础使用)
- [进阶使用](#进阶使用)
- [创建自定义hook](#创建自定义hook)
- [Options](#options)
- [`createNavigate`](#createnavigate)
- [`navigate`](#navigate)
- [License](#license)## Features
- `promisify` 的 `api` 调用
- 创建拦截器控制路由跳转(用于鉴权等等)
- 多框架统一的 `api` 管理
- 参数组合## Usage
```bash
i weapp-navigate
```### 基础使用
```js
import { navigate, createNavigate } from 'weapp-navigate'async function main() {
// 使用
await navigate({
url: '/pages/index/index',
params: {
id: '1',
type: 'add'
}
})
// 相当于
await wx.navigateTo({
url: '/pages/index/index?id=1&type=add'
})await navigate({
type: 'navigateBack'
})
// 相当于
await wx.navigateBack()await navigate({
type: 'reLaunch',
url: '/pages/index/index'
})
// 相当于
await wx.reLaunch({
url: '/pages/index/index'
})
// 同样还有 redirectTo 和 switchTab
}
```### 进阶使用
#### 创建自定义hook
```js
import { createNavigate } from 'weapp-navigate'const navigate = createNavigate({
// 默认情况下使用全局 wx 对象,你可以使用 uni / taro 这种对象
globalTarget: uni,
onBeforeExecute: async (options) => {
// 这里你可以对参数进行修改
if (options.type === 'navigateTo') {
options.url = options.url + '54321'
}
// 或者你可以使用异步方法,进行远程调用
const isAuth = await getPermission()
if(isAuth){
// 在这里抛出错误之后,不会去执行 navigateTo 那些方法,同时这个错误会被 onError 捕获
throw new Error('no login !')
}
},
onAfterExecute(result) {
// onAfterExecute 可以对 result 返回值进行修改
result.errMsg = '111'
// 同样也可以在这里使用异步方法,或者抛出错误
// throw new Error('no permission')
},
onError(error) {
console.error(error)
}
})
const result = await navigate({
url
})
```## Options
### `createNavigate`
[types](./src/type.ts)
```ts
export interface ICreateNavigateOptions {
globalTarget?: IGlobalTarget
onError?: (err: Error) => void
onBeforeExecute?: (options: NavigateOptions) => void | Promise
onAfterExecute?: (result: CallbackResult) => void | Promise
}```
### `navigate`
[types](./src/type.ts)
```ts
NavigateOptions
```## License
This project uses the [MIT license](./LICENSE).