sorry for if the something i wrote makes you upset. this is the first time to ask question in this site. thie is the code
const canvasRef = useRef(null);
const containerSize = { width: 6.1, height: 2.4, depth: 2.6 };
const palletEx = { width: containerSize.width / 2, height: 0.2, depth: containerSize.depth };
const palletTypeA = { id: 'typeA', width: 1.1, height: 0.15, depth: 1.1 };
const [palletState, setPalletState] = useState(0);
const [pallet, setPallet] = useState(null);
const rendererRef = useRef(null);
const sceneRef = useRef(null);
const [pallets, setPallets] = useState([]);
const camera = new THREE.PerspectiveCamera(50, 1.6, 0.1, 1000);
useEffect(() => {
const canvas = canvasRef.current;
const container = canvas.parentElement;
const scene = new THREE.Scene();
sceneRef.current = scene;
scene.background = new THREE.Color(0xFFFFFF);
const renderer = new THREE.WebGLRenderer({
canvas,
antialias: true,
});
rendererRef.current = renderer;
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(container.clientWidth, container.clientHeight);
const controls = new OrbitControls(camera, renderer.domElement);
camera.position.x = -1;
camera.position.y = 3;
camera.position.z = 25;
sceneRef.current.camera = camera;
const containerCube = createCube(containerSize.width, containerSize.height, containerSize.depth);
scene.add(containerCube);
containerCube.position.set(0, 0, 0);
const palletExCube = createCube(palletEx.width, palletEx.height, palletEx.depth);
scene.add(palletExCube);
palletExCube.position.set(0, 0, 0);
canvas.addEventListener("onClick", onClick1);
const addButton = document.getElementById('addButton');
animate();
}, []);
const animate = function () {
requestAnimationFrame(animate);
rendererRef.current.render(sceneRef.current, sceneRef.current.camera);
};
接下来是方法(它将在我单击按钮时执行)
const onClick1 = () => {
const newPallet = createCube(palletTypeA.width, palletTypeA.height, palletTypeA.depth);
sceneRef.current.add(newPallet);
newPallet.position.set(Math.random()*10, Math.random()*10, Math.random()*10);
setPallets(prevPallets => [...prevPallets, newPallet]);
};
const onClick2 = () => {
if (pallets.length > 0) {
// Remove the last cube from the scene
const removedPallet = pallets.pop();
sceneRef.current.remove(removedPallet);
// Update the cubes state
setPallets([...pallets]);
}
};
``
当我按下Add按钮时,我想要将托盘添加到场景中,但托盘被创建后立即消失.我希望只有当添加按钮被点击时才创建托盘,只有当按下删除按钮时才会消失.不幸的是,我不得不寻求帮助,因为我必须做出react 和Three.js,这是我完全不知道的.