mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
e3688fbd94
This PR updates the with-three-js example to use the App Router. Here are the changes that have been made: - Renamed the pages folder to the app folder. - Updated the routing for `/`, `/birds` & `/boxes` files to align with the App Router. - Added the `layout.tsx` & `tsconfig.json` file as part of the App Router. - Updated the package.json file. The following actions were performed as part of this PR: - Ran `pnpm prettier-check `with no issues found. - Executed the `pnpm check-examples` script. CC: @samcx --------- Co-authored-by: samcx <sam@vercel.com>
30 lines
778 B
JavaScript
30 lines
778 B
JavaScript
import { useRef, useState } from "react";
|
|
import { useFrame } from "@react-three/fiber";
|
|
import { Box as NativeBox } from "@react-three/drei";
|
|
|
|
export default function Box(props) {
|
|
const mesh = useRef();
|
|
|
|
const [hovered, setHover] = useState(false);
|
|
const [active, setActive] = useState(false);
|
|
|
|
useFrame(() => (mesh.current.rotation.x = mesh.current.rotation.y += 0.01));
|
|
|
|
return (
|
|
<NativeBox
|
|
args={[1, 1, 1]}
|
|
{...props}
|
|
ref={mesh}
|
|
scale={active ? [6, 6, 6] : [5, 5, 5]}
|
|
onClick={() => setActive(!active)}
|
|
onPointerOver={() => setHover(true)}
|
|
onPointerOut={() => setHover(false)}
|
|
>
|
|
<meshStandardMaterial
|
|
attach="material"
|
|
color={hovered ? "#2b6c76" : "#720b23"}
|
|
/>
|
|
</NativeBox>
|
|
);
|
|
}
|