如何在React中加载组件之前显示加载微调器

时间:2018-10-08 19:33:36

标签: reactjs spinner loading

我的问题并不像标题那么简单。我试图显示一个加载组件1秒钟,然后用实际数据替换该组件。

这是我的代码:

const TopNavigationAuth = () => (
<Container>
    <Menu.Item
        name="landing"
        content="Landing"
        as={Link}
        to={routes.LANDING}
    />
    <Menu.Item name="home" content="Home" as={Link} to={routes.HOME} />
    <Menu.Menu position="right">
        <Menu.Item
            name="account"
            content="Account"
            as={Link}
            to={routes.ACCOUNT}
        />
        <UserSection />
        <Menu.Item
            name="signout"
            content={
                <Button
                    content="Sign Out"
                    onClick={authFunctions.doSignOut}
                    primary
                />
            }
        />
    </Menu.Menu>
</Container>
);

因此,这里有<UserSection />组件,该组件实际上仅保存用户的图片和姓名(目前)。我想在1或2秒钟后加载该组件,但在此之前,我想显示一个微调器。

我正在为我的应用程序使用语义ui react,它们有一个方便的微调器,如下所示:

const LoaderExampleInlineCentered = () => <Loader active inline='centered' />

我可以为此提供一些指导吗?

1 个答案:

答案 0 :(得分:1)

您可以有条件地渲染两个组件之一,即Loader或UserSection。

this.state.profileExist === true ? <UserSection /> : <Loader />

然后在componentDid挂载中将profileExist初始化为False,然后使用setTimeout将其设置为true

componentDidMount() {
    this.setState({profileExist: false})
    setTimeout(() => { 
          this.setState({profileExist: true})
    }, 1000);
}