客户端路由器的window.onload版本?

时间:2017-06-04 00:02:08

标签: javascript angular reactjs dom react-router

我在寻找方法来判断每个资源(例如图片,视频等)何时被加载时遇到了一些困难。我可以使用window.onload轻松地在第一页上执行此操作,但在通过客户端路由器更改路由时,load事件似乎无法触发。我特意使用react-router,如果有帮助的话。

有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

要动态更改window,请执行以下操作:

import React, { Component } from 'react';
import {withRouter} from 'react-router';

class YourComponent extends Component {

  componentDidUpdate(prevProps) { 
    if (this.props.location !== prevProps.location) { // detect page change
      window.scrollTo(0, 0); // for example // or document.querySelector ... or any js
    }
  }

  render() {
   return this.props.children
  }

}

export default withRouter(YourComponent)

然后换行作为父组件:

// import react and everything
// import { BrowserRouter as Router } from 'react-router-dom';

// in your render 
<Router> 
  <YourComponent>
    <OtherComponentOrRouting />
  </YourComponent>
<Router>