LoLoo
LoLoo
  • 发布:2022-11-03 21:37
  • 更新:2022-11-04 10:10
  • 阅读:348

【报Bug】watchEffect存在严重bug

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.6.4

手机系统: Android

手机系统版本号: Android 10

手机厂商: 三星

手机机型: s9

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

const test = ref(false)
const loginBack = computed(() => {
console.log(Date(), 'test.value', test.value)
return test.value
})

    watchEffect(() => {  
        if (loginBack.value) {  
             setTimeout(function() {  
                test.value = false  
            }, 10);   
            //test.value = false  
        }  
    })  
    const doBack = () => {  
        test.value = true  
    }

操作步骤:

watchEffect只会被触发一次,除非打开console或者声明一次const test=store.state.loginBack

预期结果:

应该每次都触发。

实际结果:

只能触发一次

bug描述:

watchEffect内修改必须加延时

2022-11-03 21:37 负责人:无 分享
已邀请:
LoLoo

LoLoo (作者)

               const loginBack = computed(() => {  
            return store.state.loginBack  
        })  

        watchEffect(() => {  
            if (loginBack.value) {  
                /* setTimeout(() => {  
                    store.state.loginBack = false  
                }, 5) */  
                store.state.loginBack = false  

                if (showLogin.value) {  
                    // 恢复至注册页  
                    changePage('register')  
                } else {  
                    // 恢复至登录页  
                    changePage('login')  
                }  
            }  
        })

或者加延时也可以,取消延时就不能触发

该问题目前已经被锁定, 无法添加新回复