# react 挂载dom 没挂载上问题;

bug: react 在函数组件 挂载dom第一次拿不到;

export default function Project() {
    // 模型展示。
    let scene, camera, renderer, control;
    const cont3d = useRef();

    const init = () => {
        renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        let cont3dDom = cont3d.current;
        console.log(cont3dDom, "cont3dDom");  //拿不到dom。。。
        // cont3dDom.appendChild(renderer.domElement);
        //环境光
        let ambient = new THREE.AmbientLight(0xffffff, 0.6);
        scene.add(ambient);
        
    }
    }


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

解决方案: 因为第一次拿不到,反而后面几次可以拿到,可以直接做一个非空判断;

拿到dom之后再做下一步操作

let cont3dDom = cont3d.current;
if (typeof cont3dDom == "undefined") {
    return;
} else {
    // console.log(cont3dDom, "cont3dDom");
    cont3dDom.appendChild(renderer.domElement);
}

1
2
3
4
5
6
7
8
上次更新: 9/14/2022, 18:46:36