【发布时间】:2021-07-10 10:20:59
【问题描述】:
我正在尝试使用 Google 的模型查看器来加载 3D 模型。它有一个按钮。但我希望该按钮在模型完全加载后可见。所以,我曾经使用这个 Vanilla JavaScript 代码
<script>
const modelViewer = document.querySelector("model-viewer");
const button = document.getElementById("my_ar_button");
modelViewer.addEventListener("load", function() {
button.style.display = "block";
});
</script>
现在我打算在 ReactJS 中使用它,这就是它的样子
const modelViewer = document.querySelector("model-viewer");
const button = document.getElementById("my_ar_button");
modelViewer.addEventListener("load", function() {
button.style.display = "block";
});
<model-viewer
src="https://modelviewer.dev/shared-assets/models/reflective-sphere.gltf"
alt="A 3D model of an astronaut"
ar ar-modes="webxr scene-viewer quick-look"
ar-scale="auto"
quick-look-browsers="safari chrome"
ios-src="https://modelviewer.dev/shared-assets/models/Astronaut.usdz"
loading="eager"
poster="https://modelviewer.dev/assets/poster-astronaut.png"
autoplay
camera-controls
>
<button id="my_ar_button" class="my_ar_button" slot="ar-button">Show AR</button>
</model-viewer>
我的 CSS
.my_ar_button {
display: none;
}
我已经使用脚本标签添加了模型查看器
<Helmet>
<script
type="module"
src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"
async
>
</script>
</Helmet>
但它给了我这个错误
TypeError: Cannot read property 'addEventListener' of null
【问题讨论】:
-
利用
refs访问DOM 元素。检查 useRef。 -
欢迎来到 SO。您的问题中缺少一些细节,因此难以回答。请您向我们展示您如何将
model-viewer导入您的项目。是通过脚本标签还是通过 npm?您提供了一些代码,但没有上下文。该代码在哪里运行?在一个组件中?如果是这样,请显示它的代码。 -
@spender 我已经更新了我的问题。感谢您的建议。
标签: reactjs react-hooks model-viewer