【问题标题】:Material-UI RefreshIndicator doesn't show in initial page loadingMaterial-UI RefreshIndicator 在初始页面加载中不显示
【发布时间】:2018-08-07 05:17:24
【问题描述】:

我被卡在初始页面加载时显示加载图标。代码对我来说看起来不错,但有些代码没有显示加载图标。我正在使用材质 ui RefreshIndicator 来加载图标。我正在使用material-ui V^0.18.7

这是我最初的 App.js 代码

import React, { Component } from 'react';
import HeaderTemplate from './Layout/Components/Header';
import FooterTemplate from './Layout/Components/Footer';
import RefreshIndicator from 'material-ui/RefreshIndicator';
import RaisedButton from 'material-ui/RaisedButton';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
class App extends Component {
  constructor(props){
    super(props);
    this.state = {
      showLoading: true
    }
  }
  componentDidMount(){
    this.setState({
      showLoading: false
    })
  }

  renderLoading(){
      <RefreshIndicator
        size={40}
        left={10}
        top={0}
        status="loading"
        style={{display: 'inline-block', position: 'relative'}}
      />
  }
  render() {
    const muiTheme = imports.getMuiTheme({

    });
    return (
      <MuiThemeProvider muiTheme={muiTheme}>
        <div>
        <HeaderTemplate logo="Postme" />
          <div id="demo-settings" className="">
            <a href="#" id="demo-settings-toggler" className="fa fa-dot-circle-o"></a>
          </div>
        <div className="container-fluid bodyfluid">
        {this.state.showLoading ? this.renderLoading(): ''}
          {this.props.children}
        </div>
        <FooterTemplate />
      </div>
      </MuiThemeProvider>
    );
  }
}

export default App;

【问题讨论】:

    标签: javascript reactjs material-ui


    【解决方案1】:

    您的方法 renderLoading() 不返回任何内容。它只是将 JSX-Element 创建为“无”。

    import React, { Component } from 'react';
    import HeaderTemplate from './Layout/Components/Header';
    import FooterTemplate from './Layout/Components/Footer';
    import RefreshIndicator from 'material-ui/RefreshIndicator';
    import RaisedButton from 'material-ui/RaisedButton';
    import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
    class App extends Component {
      constructor(props){
        super(props);
        this.state = {
          showLoading: true
        }
      }
      componentDidMount(){
        this.setState({
          showLoading: false
        })
      }
    
      renderLoading(){
        return (<div style={{position: 'relative'}}>
          <RefreshIndicator
            size={40}
            left={10}
            top={0}
            status="loading"
            style={{display: 'inline-block', position: 'relative'}}
          />
      </div>);
      }
      render() {
        const muiTheme = imports.getMuiTheme({
    
        });
        return (
          <MuiThemeProvider muiTheme={muiTheme}>
            <div>
            <HeaderTemplate logo="Postme" />
              <div id="demo-settings" className="">
                <a href="#" id="demo-settings-toggler" className="fa fa-dot-circle-o"></a>
              </div>
            <div className="container-fluid bodyfluid">
            {this.state.showLoading ? this.renderLoading(): ''}
              {this.props.children}
            </div>
            <FooterTemplate />
          </div>
          </MuiThemeProvider>
        );
      }
    }
    
    
    export default App;
    

    现在它返回你创建的 JSX 元素,它应该按照你的喜好呈现。

    【讨论】:

    • 哦,是的,我的错。我会检查 n 让你知道。感谢您的快速回复。
    • 非常糟糕。这些天我经常犯愚蠢的错误。谢谢
    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2010-10-30
    • 2015-02-17
    相关资源
    最近更新 更多