我有一个React组件,里面有很多子组件.我希望不是立即渲染子组件,而是在经过一些延迟后渲染(每个子组件是一致的或不同的).

我在想——有没有办法做到这一点?

推荐答案

我认为最直观的方法是给子元素们一个"wait"prop,它会在从父母那里传下来的持续时间内隐藏组件.通过将默认状态设置为"隐藏",React仍将立即渲染组件,但在状态更改之前,组件将不可见.然后,您可以设置componentWillMount来调用函数,在通过props 传递的持续时间之后显示它.

var Child = React.createClass({
    getInitialState : function () {
        return({hidden : "hidden"});
    },
    componentWillMount : function () {
        var that = this;
        setTimeout(function() {
            that.show();
        }, that.props.wait);
    },
    show : function () {
        this.setState({hidden : ""});
    },
    render : function () {
        return (
            <div className={this.state.hidden}>
                <p>Child</p>
            </div>
        )
    }
});

然后,在父组件中,只需传递希望子组件在显示之前等待的持续时间.

var Parent = React.createClass({
    render : function () {
        return (
            <div className="parent">
                <p>Parent</p>
                <div className="child-list">
                    <Child wait={1000} />
                    <Child wait={3000} />
                    <Child wait={5000} />
                </div>
            </div>
        )
    }
});

Here's a demo

Reactjs相关问答推荐

eslint -无法解析模块的路径@web3modal/ethers/react导入/no-unresolved

react-hook-form问题:为什么getValues不返回大多数当前值?

如何使用react-router-dom导航到网页中的其他路由?

Reaction Native:在初始获取后,Reducer变为未定义

单击按钮时在子元素中不显示任何内容-react

在Next.js中实现动态更改的服务器组件

Redux Provider Stuck甚至彻底遵循了文档

在一个blog函数中调用setState钩子

如何通过reactjs正确显示记录

组件安装后调用自定义钩子

在 React 中将 MUI 样式外包到单独的文件中?

在按钮单击中将动态参数传递给 React Query

在 React JS 中编辑表格数据

将 ref 转发到所有页面(路由组件)只是为了将其应用于
并具有跳过导航链接(按钮).有没有更好的办法?

Wordpress 插件在激活时创建一个 React Public 页面

如何从其他组件访问 useQuery refetch 方法?

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

getAttribute 函数并不总是检索属性值

我在使用 Elements of stripe 时使用 React router v6

如何通过 Material Ui 设计将 Accordion 添加到您的 React 项目中?