有个布尔类型的useState,点击页面上的按钮后更新,但是打印发现在canvas.on监听的mouse事件中并没有更新,还是false,将变量直接当做参数传给监听事件依然是false
有个布尔类型的useState,点击页面上的按钮后更新,但是打印发现在canvas.on监听的mouse事件中并没有更新,还是false,将变量直接当做参数传给监听事件依然是false
4 回答1.6k 阅读
2 回答1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答920 阅读✓ 已解决
1 回答654 阅读✓ 已解决
2 回答806 阅读✓ 已解决
2 回答960 阅读
第一眼我以为是个简单的变量捕获造成的闭包陷阱
但是加了个
useCallback
测试之后,发现我的用例不得行🤣,而useEffect
不给deps
,所以暗戳戳地把第一版答案删掉了。现在我觉得可能是
Fabric
的事件机制导致的问题因为如果是普通的 DOM 事件监听:
这样是可以的,因为
useEffect
不加deps
参数,它会在visible
变化的时候更新副作用。但是换成
FabricJS
的事件监听就行不通了:就不行了。
如果蹲不到其他大佬的答案的话
或许你只能采用下面这种“奇技淫巧”了: