@codelet/core
Version:
mini core
59 lines (58 loc) • 1.74 kB
JavaScript
import { isNumber } from '@daysnap/utils';
import { col } from '../codelet';
import { createBehavior } from '../create';
import { parseLocation, parseQuery } from '../utils';
function parseOptions(options) {
if (col.useRouter) {
return options;
}
return parseLocation(options);
}
export const RouterBehavior = createBehavior({
data: {
// 页面参数
query: {},
},
methods: {
/**
* 获取页面 url 参数
*
* let { query = {}, scene, ...rest } = options
* 包含了 query 和 scene 参数,优先级 rest > scene > query
*/
routerParseQuery(options) {
const query = parseQuery(options);
this.setData({ query });
return query;
},
/**
* 页面跳转
*
* replace 为 true 时,调用 wx.redirectTo 跳转页面,
* 否则调用 wx.navigateTo,默认为 false
*/
routerPush(options) {
const { replace, ...rest } = parseOptions(options);
replace ? col.redirectTo(rest) : col.navigateTo(rest);
},
/**
* 跳转第一个页面
*
* replace 为 true 时,调用 wx.reLaunch 跳转页面,
* 否则调用 wx.switchTab,默认为 false
*/
routerRoot(options) {
const { replace, ...rest } = parseOptions(options);
replace ? col.reLaunch(rest) : col.switchTab(rest);
},
/**
* 路由返回
*/
routerPop(delta = 1) {
if (!isNumber(delta) || delta < 1) {
delta = 1;
}
col.navigateBack({ delta });
},
},
});