微信小程序重写onLoad函数,让每个页面在运行的时候都可以执行
2020-10-30 本文已影响0人
Demon_LF
// 还原上个页面的参数到 options, 并删除 options.params
const extractParams = function (query = {}) {
const { params } = query
let options = { ...query }
if (params !== undefined) {
options = {
...options,
...JSON.parse(decodeURIComponent(params)),
}
delete options.params
}
return options
}
const originPage = Page
// 对微信原来的 Page 函数进行扩展
Page = function (config = {}) {
// 重写 Page 的 onLoad 函数, 还原上个页面传进来的参数
let { onLoad } = config
config.onLoad = function (options = {}) {
// 在这里写统一的拦截命令
// 例如添加一些赋值或者执行一个方法
onLoad && onLoad.call(this, extractParams(options))
}
return originPage(config)
}