Итак, я хотел создать всплывающий элемент 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>
);
}
Я попытался изменить стиль, чтобы сделать отображение «скрытым» 'and' block ', но это не работает, так как не показывает слайд в анимации, он просто всплывает. Кроме того, если я попытаюсь управлять этим отдельно, например, создать событие click на холсте, чтобы div отображался с реагирующей пружиной, если я пытаюсь использовать кнопку выхода, событие click больше не работает.
Вот моя песочница, чтобы показать, что происходит. : (прошу прощения, если все это кажется сбивающим с толку) Коды находятся на странице 1. js и переключаются. 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