在反应路由器中的路由之间显示一个简单的加载指示器

Joh*_*ohn 6 javascript reactjs react-router redux react-redux

我来自AngularJS世界,几天前开始用react-router,在AngularJS 中编写我的第一个 React 应用程序:

app.directive('Loading', function($rootScope, $timeout) {
    return {
        restrict: 'E',
        replace: true,
        template: '<p>Loading</p>'
        link: function(scope, element) {
            $rootScope.$on('$routeChangeStart', function(event, currentRoute, previousRoute) {
                element.removeClass('ng-hide');
            });

            $rootScope.$on('$routeChangeSuccess', function() {
                element.addClass('ng-hide');
            });
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

然后我只需添加<Loading></Loading>. 所以现在在我的 React 应用程序中,我有:

class App extends Component {
  render() {
    return (
       <Router>
        <div>
          <ul>
            <li><Link to="/">Home</Link></li>
            <li><Link to="/about">About</Link></li>
          </ul>

          <hr/>

          <Route exact path="/" component={Home}/>
          <Route path="/about" component={About}/>

        </div>
      </Router>


    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的两个组件很简单:

class Home extends Component {
    render() {
        return (
            <h1>Home</h1>
        );
    }
}
class About extends Component {
    render() {
        return (
            <h1>About</h1>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在不使用reduxJS 的情况下做到这一点吗?

小智 6

您可以在 React 中使用高阶组件以通用方式执行此操作。

看一个例子:

https://github.com/thejameskyle/react-loadable