Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

无法命中onUpdate钩子 #44

Open
QAQLC opened this issue Aug 7, 2024 · 5 comments
Open

无法命中onUpdate钩子 #44

QAQLC opened this issue Aug 7, 2024 · 5 comments

Comments

@QAQLC
Copy link

QAQLC commented Aug 7, 2024

export const globalData = {
    token: '',
}
CustomHook.install(
    {
        Token: {
            name: 'Token',
            watchKey: 'token',
            onUpdate(token: string | undefined) {
                console.log('onUpdate', token)
                return !!token
            },
        },
    },
    globalData
)
在代码中将globalData中的token清空
getApp().globalData.token = ''

预期会命中onUpdate钩子,结果并没有

@1977474741
Copy link
Owner

是console没打印吗?token清空之前是啥

@QAQLC
Copy link
Author

QAQLC commented Aug 8, 2024

是console没打印吗?token清空之前是啥

token 就是正常的jwt字符串,是的,console不打印。
代码精简逻辑,app.ts onLaunch中获取token并给通过如下代码赋值

onLaunch() {
        const token = (this.globalData.token = getToken())
        if (!token) {
            this.doLogin().then(token => {
               const app = getApp<IAppOption>()
               app.globalData.token = token
            })
        }
    },
   其他页面通过getApp().globalData.token = '' 将token情况,onUpdate钩子无法命中

@1977474741
Copy link
Owner

清空后下次进入页面涉及token的钩子依旧执行了吗?比如onLoadToken、onShowToken

@QAQLC
Copy link
Author

QAQLC commented Aug 9, 2024

清空后下次进入页面涉及token的钩子依旧执行了吗?比如onLoadToken、onShowToken

这个到没有在意,我已经改用proxy自己实现了。
我不清楚是不是我使用姿势问题,我翻看了issue竟然没有人提,这个问题。按理说这个问题,应该很容易暴露出来才对,代码其实没有什么东西就是如下

export const globalData = {
    token: '',
}
CustomHook.install(
    {
        Token: {
            name: 'Token',
            watchKey: 'token',
            onUpdate(token) {
                console.log('onUpdate', token)
                return !!token
            },
        },
    },
    globalData
)
在控制台将值清空,很容易就复现了
getApp().globalData.token = ''

@1977474741
Copy link
Owner

你清空是做什么用,不就是在下次执行涉及Token的钩子的时候不再执行吗,是原生微信小程序是吧?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants