Vite React プロジェクトを保存するたびに、既存のキャンバス要素を置き換えるのではなく、新しいキャンバス要素がページ本文に追加されるのはなぜですか?
P粉186904731
P粉186904731 2024-03-30 09:57:49
0
1
515

ThreeJs の学習を始めようとしています (JavaScript Web 開発も初心者です)。いくつかのチュートリアルを見た後、Vite と React から始め、次に基本的な回転立方体から始めました。この部分は機能します。

しかし、vite について読んだところによると、作業中のファイルを保存するだけでページに再ロードできるはずです。しかし実際にはそうではありません。ページのコンテンツを確認したところ、ファイルを保存するたびに、(既存のキャンバス要素を置き換えるのではなく) 2 つの同じキャンバス要素がページ本文に追加されます。つまり、新しいキャンバス要素を確認するには、ページの一番下までスクロールする必要があります。コンテンツ(または、Vite の高速更新機能の目的に反するページのリロード)。

私は何を間違えたのでしょうか?基本的な Vite プロジェクトを構築し、アプリにコンポーネントを追加し、途中で Vite の高速更新をバイパスして、基本的な立方体レンダリングを行うチュートリアルに従いました。ヘルプ?

ギットハブ: https://github.com/amdreallyfast/ThreeJsTutorials/tree/main/npmfrontend

###再現:### ああああ

P粉186904731
P粉186904731

全員に返信(1)
P粉788571316

#render 関数では毎回 renderScene を呼び出します。 React では、再レンダリング/更新されるたびに render 関数が呼び出されます。

したがって、更新 (あなたの場合はホットリロード) ごとに

render 関数がトリガーされ、新しい DOM 要素が作成されます。

React を使用するときに DOM 要素を手動で作成することは、一般にアンチパターンです (何をしようとしているのか完全に確信している場合を除く)。次のように Three.js React レンダラーを使用することをお勧めします:

https://github.com/pmndrs/react-三fiber

何らかの理由でこれを本当に実行したい場合は、React アプリケーションの

componentDidMount ライフサイクル中に呼び出して、componentWillUnmount ライフサイクル中に必ずクリーンアップすることを検討してください。 。詳細については、ここで読むことができます: https://react.dev/reference/react/Component#コンポーネントがマウントされています

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート