react-loadable 的核心思想

react-loadable解决什么问题?

当你的项目足够大时,把所有代码打包到一个bundle中的启动时间就会成为问题。这时就需要把app拆分为若干个bundle,然后根据需求动态加载它们.

react-loadable的关键实现

1.import 和 import()是不同的.
import * from '';在编译阶段执行,同步执行。
import(相对路径) 异步执行,返回Promise对象。

2.state的loaded为真正渲染的组件。根据loading, error展示loading组件还是真实组件。
具体代码如下:

  function load(loader) {
  // loader为传入的参数loader: () => import('');
    let promise = loader();

    let state = {
      loading: true,
      loaded: null,
      error: null
    };

    state.promise = promise
      .then(loaded => {
        state.loading = false;
        state.loaded = loaded;
        return loaded;
      })
      .catch(err => {
        state.loading = false;
        state.error = err;
        throw err;
      });

    return state;
  }

  render() {
      if (this.state.loading || this.state.error) {
        return React.createElement(opts.loading, {
          isLoading: this.state.loading,
          pastDelay: this.state.pastDelay,
          timedOut: this.state.timedOut,
          error: this.state.error,
          retry: this.retry
        });
      } else if (this.state.loaded) {
        return opts.render(this.state.loaded, this.props);
      } else {
        return null;
      }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 三年又几载 拼搏在外 如今的鬼时代 大家都在赛 拼爹 拼帅 拼情债 苹果 ipad的显摆 浓妆艳抹的姿态 没有那么...
    罗先生mm阅读 359评论 3 0
  • 今天参加了广州购书中心举办的《进击的智人》河森堡分享会和签售会。 两年前,无意中在《奇葩大会 2 》上听过这个高个...
    侃迪斯阅读 483评论 0 1
  • 喜搬新家,得书房一间,不甚欣喜。名“洪泽书斋”。 斋内书柜两列,架子鼓一套,音响静立墙角。闲来拿水一杯,读...
    owen胡阅读 1,203评论 2 4