SilurianYang / uni-simple-router

A simple, lightweight 'uni-app' routing plugin
https://v2.hhyang.cn/v2/
MIT License
743 stars 163 forks source link

beforeProxyHooks 会执行两次 #394

Closed xuyongweb closed 2 years ago

xuyongweb commented 2 years ago

问题描述 [问题描述:我在beforeProxyHooks 里面执行onLoad会执行两次]

复现步骤 [复现问题的步骤]

beforeProxyHooks: {
        onLoad:async ([options], next)=>{
        let baseInfo = store.getters.baseInfo // 初始化基础信息
        console.log(baseInfo)
        if (JSON.stringify(baseInfo) === '{}') {
          baseInfo = await store.dispatch('user/getInfo')
        }
        const emoticonList = baseInfo.emoticonList || []
        const emojList = store.getters.emojList || []
        if (emojList.length == 0) {
          // 初始化表情包信息
          let emoJSON = await getEmojMail()
          emoJSON = [...emoJSON, ...emoticonList]
          store.commit('user/SET_EMOJLIST', emoJSON)
        }
            next([{
                ...options,
                ...baseInfo
            }])
        },
    },

预期结果 [只执行一次]

实际结果 [执行了两次]

系统信息:

补充信息 [可选] [根据你的分析,出现这个问题的原因可能在哪里?]

SilurianYang commented 2 years ago

触发多次是因为你当前页面有多个onLoad包括混入 及页面生命周期, 每次onLoad在执行之前都会执行路由插件注入的父级生命周期 。 你可以打印this查看结果

xuyongweb commented 2 years ago

问题解决了我写的有问题