码迷,mamicode.com
首页 > 其他好文 > 详细

React 懒加载组件

时间:2017-01-12 23:00:34      阅读:1481      评论:0      收藏:0      [点我收藏+]

标签:color   man   ase   var   html   create   inf   xtend   account   

 

 

 //组件第一次初始化的时候加载.

 

import React, {PropTypes} from ‘react‘;

//import AppComposer from ‘./views/App/AppComposer‘;
//import LoginComposer from ‘./views/Login/LoginComposer‘;
//import HomeComposer from ‘./views/Home/HomeComposer‘;
//import WatchListComposer from ‘./views/WatchList/WatchListComposer‘;
//import SystemLogComposer from ‘./views/SystemLog/SystemLogComposer‘;
//import TeamManageComposer from ‘./views/TeamManage/TeamManageComposer‘;
//import {UserQueryPage} from ‘./views/UserQuery/UserQueryComposer‘;
//import ClosedCaseComposer from ‘./views/ClosedCase/ClosedCaseComposer‘;
//import AccountInfoComposer from ‘./views/AccountInfo/AccountInfoComposer‘;


function createLazyLoadComponent(doLoadComponent){
    return class newClassComponent extends React.Component{

        constructor(){
            super(...arguments);
            this.state = {
                RealComponent : null
            };
        }

        componentDidMount(){
            //组件第一次初始化的时候加载.
            doLoadComponent((pageComponent)=>{
                this.setState({
                    RealComponent:pageComponent
                });
            });
        }


        render(){
            var {RealComponent} = this.state;
            var props = this.props;
            if (RealComponent){
                return <RealComponent {...props} />
            }
            return <div>loading...</div>
        }
    }
}


export const LoginComposer = createLazyLoadComponent((onLoadCallback)=>{
     require([‘./views/Login/LoginComposer‘], onLoadCallback);
});

export const HomeComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/Home/HomeComposer‘], onLoadCallback);
});

export const WatchListComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/WatchList/WatchListComposer‘], onLoadCallback);
});

export const SystemLogComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/SystemLog/SystemLogComposer‘], onLoadCallback);
});

export const TeamManageComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/TeamManage/TeamManageComposer‘], onLoadCallback);
});

export const ClosedCaseComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/ClosedCase/ClosedCaseComposer‘], onLoadCallback);
});

export const AccountInfoComposer = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/AccountInfo/AccountInfoComposer‘], onLoadCallback);
});

export const UserQueryPage = createLazyLoadComponent((onLoadCallback)=>{
    require([‘./views/UserQuery/UserQueryComposer‘], ({UserQueryPage})=>{
        onLoadCallback(UserQueryPage);
    });
});

 

React 懒加载组件

标签:color   man   ase   var   html   create   inf   xtend   account   

原文地址:http://www.cnblogs.com/lhp2012/p/6279782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!