【发布时间】:2018-01-03 14:01:42
【问题描述】:
尝试在我的 React.js 项目中创建加载图标(应用程序构建在 React 中,从 Wordpress REST API 获取数据并使用 Flux 处理状态)。但是 componentDidMount() 永远不会被触发,所以我的加载图标永远不会消失。这是我的 app.js:
class App extends Component {
templates = {
'about': About,
'contact': Contact,
'archive': Archive
}
buildRoutes(data){
return data.pages.map((page, i) => {
return(
<Route
key={i}
component={this.templates[page.slug]}
path={`/${page.slug}`}
exact
/>
)
})
}
run(){
DataActions.getPages((response) => {
render(
<div>
<div className="loaderSmall" id="loaderSmall">
<div className="pixel-loader"></div>
</div>
<Router>
<div>
<Header />
<Switch>
<Route path="/" component={Home} exact />
{this.buildRoutes(response)}
<Route render={() => { return <Redirect to="/" />}} />
</Switch>
<Footer />
</div>
</Router>
</div> , document.getElementById('app')
);
});
}
componentDidMount() {
window.addEventListener('load', this.handleLoad);
console.log("componentDidMount");
}
// Fade out site-loader
handleLoad() {
console.log("CALLED");
var fadeTarget = document.getElementById("loaderSmall");
var fadeEffect = setInterval(function () {
if (!fadeTarget.style.opacity) {
fadeTarget.style.opacity = 1;
}
if (fadeTarget.style.opacity < 0.1) {
clearInterval(fadeEffect);
} else {
fadeTarget.style.opacity -= 0.1;
}
}, 1000);
}
}
..我没有收到任何错误:
【问题讨论】:
-
你的淡出对我有用,你有什么错误吗??
-
没有noo错误:(@AlejandroMontilla
-
我已经发布了一个答案,问题可能是
render()方法。试试看,然后告诉我。 -
所有浏览器都支持事件“load”吗?
-
@Sulthan 我想是这样,当我在另一个项目中添加 handleLoad() 时它可以工作 - 所以这似乎是我的项目中从未调用 handleLoad() 的问题:(
标签: javascript reactjs loader flux