You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除console.log()后$effect的响应性消失问题求助

移除console.log()后$effect的响应性消失问题求助

各位好,我最近碰到个特别费解的问题,想请大家帮忙分析下:

我用$state声明了一个数组状态:

let clicks = $state([])

接着写了一个$effect,打算在满足条件时,基于clicks的数组内容生成一个矩形图形,添加到画板里:

$effect(() => {
    // Box selection
    if (autoDetectSettings.value.mode === 'box' && drawingBox && clicks.length === 2) {
        const poly = objectSchema.parse({
            id: createId(),
            type: 'poly',
            coords: [
                { x: clicks[0].x, y: clicks[0].y },
                { x: clicks[0].x, y: clicks[1].y },
                { x: clicks[1].x, y: clicks[1].y },
                { x: clicks[1].x, y: clicks[0].y },
            ],
            color: '#ffffff',
            opacity: 0.15,
            stroke_color: '#ffffff',
            stroke_opacity: 1,
            stroke_width: 2,
            blend_mode: 'normal',
        })
        artboard.objects.push(poly)
    }
})

我用$inspect检查过,clicks的值明明在正常更新,但这个effect就是不触发。更奇怪的是,只要我在effect开头加一行console.log(clicks),它就又能正常响应clicks的变化了!可我总不能一直留着这个调试用的log,有没有大佬知道这到底是哪里出问题了呀?

备注:内容来源于stack exchange,提问作者Nikolay Dyankov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:18:04