Ame*_*lia 18 loading onload onload-event reactjs
我正在尝试使用 Google 的模型查看器 Web 组件在我的网站上显示模型。文档说该组件有一个“已加载”属性,该属性是“只读”的,并且“如果自上次 src 更改以来已触发加载事件,则返回 true”。我试图在组件加载时使用此属性来调用函数,但我认为我没有正确访问它。我应该使用 componentDidUpdate 来检查此属性是否已更改?或者有没有办法使用onload()?
到目前为止我的代码如下所示:
class App extends Component {
isLoaded() {
console.log("loaded!")
}
render() {
return (
<>
<model-viewer
src={require('..my model..')}
alt="A model"
loading="eager"
loaded={this.isLoaded}
/>
</>
)
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
HA *_*A S 24
有两种解决方案取决于您遵循哪种反应逻辑
class Welcome extends React.Component1.基于负载的类
对于此解决方案,您可以使用componentDidMount函数
class Welcome extends React.Component {
componentDidMount() {
// call api or anything
console.log("Component has been rendered");
}
render() {
return <h1>Hello, World</h1>;
}
}
}
Run Code Online (Sandbox Code Playgroud)
2. 使用基于函数的组件和 Hooks Effect Hook、useEffect 添加了从函数组件执行副作用的能力。它与 React 类Ref中的 componentDidMount、componentDidUpdate 和 componentWillUnmount 具有相同的用途
import React, { useState, useEffect } from 'react';
export default function Welcome() {
useEffect(() => {
// call api or anything
console.log("loaded");
});
return <h1>Hello, World</h1>;
}
Run Code Online (Sandbox Code Playgroud)
问题是model-viewer你在这种情况下使用的不是React 组件。这意味着它既没有反应组件行为,也没有生命周期。
我的解决方案是寻找其他一些库作为包装器,如下所示:
| 归档时间: |
|
| 查看次数: |
70099 次 |
| 最近记录: |