所以我想创建一个弹出 div,它会在选择对象时从侧面滑动,然后在重新选择对象时退出。我还想创建一个也会关闭 div 的退出按钮。我几乎可以理解如何做到这一点,只是我想重用这个 div 组件,这就是为什么我将它作为导出保存在不同的 javascript 文件中的原因。这就是问题所在,因为我无法处理跨文件的事件。
这是我的代码:
/*Popup div export*/
export default () => {
const [toggle, set] = useState(true);
const { xyz } = useSpring({
from: { xyz: [-1000, 0, 0] },
xyz: toggle ? [0, 0, 0] : [-1000, 0, 0]
});
return (
<a.div
style={{
transform: xyz.interpolate(
(x, y, z) => `translate3d(${x}px, ${y}px, ${z}px)`
)
}}
className="expand"
>
<Link to={link}>
<a.button>Next</a.button>
</Link>
<button onClick={() => set(!toggle)}>Exit</button>
</a.div>
);
};
/*This is where I am implementing the export*/
<Canvas>
<Suspense fallback={<Fallback />}>
<Cube position={[-1.2, 0, 0]} onClick={e => <Toggle />} /> <---/*Here is the click event where I call the div*/-->
<Cube position={[1.2, 0, 0]} />
</Suspense>
</Canvas>
);
}
我尝试更改样式以使显示“隐藏”和“阻止”,但这不起作用,因为它不会在动画中显示它只是弹出的幻灯片。此外,如果我尝试单独操作它,例如,在画布中创建一个单击事件以使 div 与 react-spring 一起出现,如果我尝试使用退出按钮,则单击事件不再起作用。
这是我的沙箱,用于显示正在发生的事情。:(如果这一切看起来令人困惑,请抱歉)代码在 Page1.js 和 toggle.js 中
https://codesandbox.io/s/sad-goldberg-pmb2y?file=/src/toggle.js:250-326
编辑:更简单的沙箱视觉效果: https ://codesandbox.io/s/happy-chatelet-vkzjq?file=/src/page2.js