Show loading icon before first react app initializ

2019-08-02 22:39发布

What is the standard way of showing a loader icon before browser downloads all js files and loads react application.

Can I do something like this without breaking anything?

<div id="content" class="app">
  Loading...
</div>

2条回答
forever°为你锁心
2楼-- · 2019-08-02 23:19

One way of doing this using component life cycle methods.

class App extends React.Component {
    constructor(props){
      super(props);
      this.state = {
        loading: true
      };
    }
  
    componentWillMount(){
       this.setState({loading: true}); //optional 
    }

    componentDidMount(){
        this.setState({loading: false}) 
    }
  
    render() {
        return (
            <section className="content">
              {this.state.loading && 'loading...'} {/*You can also use custom loader icon*/}
              <p>Your content comes here</p>
              {this.props.children}
            </section>
        );
    }
}

ReactDOM.render(<App />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app">
  
</div>

查看更多
劫难
3楼-- · 2019-08-02 23:21

Yes.

Once your javascript has loaded, you can replace Loading... by rendering your react app into the same <div>

render(
  <App />, 
  document.getElementById('content')
);
查看更多
登录 后发表回答