移除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
相关产品推荐
相关产品推荐

