其他分享
首页 > 其他分享> > React Lazy 和 Suspense

React Lazy 和 Suspense

作者:互联网

文章目录

React.lazy 定义

代码分割

import 函数

const add = (x, y) => {
    return x + y;
}
export default add;
//import 命令
import { add } from './math';

console.log(add(16, 26));

//import函数
import("./math").then(math => {
  console.log(math.add(16, 26));
});

动态 import() 语法目前只是一个 ECMAScript (JavaScript) 提案, 而不是正式的语法标准。预计在不远的将来就会被正式接受

import 函数示例

<div id="root">
  页面无内容
</div>
<button id="btn">加载js</button>

<script>
  document.getElementById('btn').onclick=function(){
    import('./test.js').then(d=>{
      d.test()
    })
  }
</script>
function test(){
  document.getElementById('root')
  root.innerHTML='页面变的有内容了'
}
export {test}

在这里插入图片描述

在这里插入图片描述

React.lazy 使用

// 普通的子组件
import React from 'react';
const OtherComponent = ()=>{
    return(
        <div>我已加载</div>
    )
}
import React, {Component} from 'react';
const OtherComponent = React.lazy(()=>import('./OtherComponent'));
class App extends Component{
    constructor(props){
        super(props);
        this.state = {};
    }
    render(){
        return (
            <div>
                <OtherComponent />
            </div>
        )
    }
}
export default App;
import ReactDOM  from 'react-dom'
import App from './Lazy/App';

ReactDOM.render(
    <App  />,
    document.getElementById('root')
)

Suspense

如果在 App 渲染完成后,包含 Other 的模块还没有被加载完成,我们可以使用加载指示器为此组件做优雅降级。这里我们使用 Suspense 组件来解决。

import React, {Suspense,Component} from 'react';
const OtherComponent = React.lazy(()=>import('./OtherComponent'));
class App extends Component{
    constructor(props){
        super(props);
        this.state = {
            visible:false
        };
    }
    render(){
        return (
            <div>
                <button onClick={() => {
          this.setState({ visible: true })
        }}>
          加载OtherComponent组件
        </button>
        <Suspense fallback={<div>Loading...</div>}>
          {
            this.state.visible
              ?
              <OtherComponent />
              :
              null
          }
        </Suspense>
            </div>
        )
    }
}
export default App;

在这里插入图片描述
在这里插入图片描述

标签:Lazy,OtherComponent,App,lazy,React,Suspense,import,加载
来源: https://blog.csdn.net/qq_45677671/article/details/116072355