Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
581 views
in Technique[技术] by (71.8m points)

React组件的多个子组件渲染时能否优先渲染某子组件

React组件:

<A>
  <B />
  <C />
</A>

A 变化更新时, B 和 C 的render也都同时执行了, render执行完了过了一两秒, B 和 C才渲染展示出来.
当然这是由于C组件内容特别多, 所以渲染出来很慢, 导致B组件也渲染出来的也很慢, 请问有没有办法让B优先渲染展示出来 ?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

定义延迟加载的组件:

import React from 'react';
import PropTypes from 'prop-types';
class Delayed extends React.Component {
    constructor(props) {
        super(props);
        this.state = {hidden : true};
    }

    componentDidMount() {
        setTimeout(() => {
            this.setState({hidden: false});
        }, this.props.waitBeforeShow);
    }
    render() {
        return this.state.hidden ? '' : this.props.children;
    }
}
Delayed.propTypes = {
  waitBeforeShow: PropTypes.number.isRequired
};
export default Delayed;

使用方式:

import Delayed from '../Time/Delayed';
import React from 'react';

const myComp = props => (
  <Delayed waitBeforeShow={500}>
     <div>Some child</div>
  </Delayed>
)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...