问题描述
Framer Motion在子组件中传递事件处理程序时遇到问题。
以下沙箱: https://codesandbox.io/s/framer-motion-svg-checkbox-forked-vgrre?file=/src/Example.tsx
预期的行为是,当我将鼠标悬停在黑色圆圈上时,将出现一个胶囊形状图标。当我将光标移出圆圈时,胶囊形状图标将消失。
在上面的示例中,如果我将它们放在CircleBackground组件中,则onMouseEnter和onMouSEOut不起作用。 (因为我现在有)
但是,如果我将它们移到
希望我明确了我的问题。谢谢
解决方法
Here是解决您的问题的可能方法:
https://codesandbox.io/s/so-q-63601325-68peh?file=/src/Example.tsx:1016-1344
您的HoverBackground
和CircleBackground
相互覆盖,因此鼠标事件未到达子组件。
在HoverBackground
上切换pointer-events属性可以解决此问题:
<HoverBackground
path={editHoverBackground}
variants={tickVariants}
style={{
pathLength,opacity,pointerEvents: isChecked ? "all" : "none"
}}
custom={isChecked}
location="translate(23,39)"
onMouseOut={() => setIsChecked(!isChecked)}
/>