Кроме того, рендеринг сцены ThreeJS не имеет ничего общего с рендерингом объектов DOM, кроме подключения холста к контейнеру в DOM, то, что рисуется на вашем холсте, определяется webglrenderer

аюсь создать компонент React, который отображает сцену three.js. Однако всякий раз, когда я пытаюсь смонтировать компонент вместо того, чтобы увидеть какую-либо сцену, которая отображается, я просто вижу текст[object HTMLCanvasElement] показывается.

Вот мой компонент:

import React from 'react';
import * as THREE from 'three';

class Cube extends React.Component {

    constructor() {
        super();
        this.animate = this.animate.bind(this);
        this.scene = new THREE.Scene();
        this.geometry = new THREE.BoxGeometry(200, 200, 200);
        this.material = new THREE.MeshBasicMaterial({
            color: 0xff0000,
            wireframe: true
        });
        this.mesh = new THREE.Mesh(this.geometry,this.material);
        this.scene.add(this.mesh);
        this.renderer = null;
        this.camera = null;
    }

    render() {
        if (typeof window !== 'undefined') {
            this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
            this.camera.position.z = 1000;
            this.renderer = new THREE.WebGLRenderer();
            this.renderer.setSize(window.innerWidth, window.innerHeight);
            return (
                <div dangerouslySetInnerHTML={{__html: this.renderer.domElement}}></div>
            );
        } else {
            return null;
        }
    }
}

export default Cube;

Я получил код отстраница пакета три нпм и попытался преобразовать его в компонент React. Что я делаю не так, что сцена не рендерится?

Ответы на вопрос(1)

Ваш ответ на вопрос