GX博客

分享个人 Full-Stack JavaScript 项目开发经验

React组件中如何加载第三方脚本

在某些情况下,我们需要在 React 应用程序中使用第三方脚本库,而这些脚本库并不符合 npm 规范,我们需要通过 script 标签加载到应用中。为了不影响应用程序的加载体验,我们只想在相关组件中加载这些脚本。一般做法可以通过动态创建 script 标签实现,而react-load-script库可以帮助我们方便地实现。本文将介绍它的使用和注意问题。


安装 react-load-script。

yarn add react-load-script

使用例子如下:

import React from 'react';
import Script from 'react-load-script';

class Example extends React.Component {

    onloadButNotMount = false;

    isMount = false;

    onCreate = () => {
        // script 标签创建回调
    };

    onError = () => {
        // 脚本加载错误回调
    };

    onLoad = () => {
        // 脚本加载完成回调

        if(this.isMount) {
            // 脚本加载后的初始化操作
        } else {
            this.onloadButNotMount = true;
        }
    };

    componentDidMount() {

        this.isMount = true;

        if(this.onloadButNotMount) {
            // 脚本加载后的初始化操作
        }
    }

    render() {
         <Script
            url="https://examle.com/index.js"
            onCreate={this.handleScriptCreate}
            onError={this.handleScriptError}
            onLoad={this.handleScriptLoad}
            attributes={{id: 'third-part-script'}}
         />
    }
}

值得注意:

  • 初次加载时 componentDidMount 会先于 onLoad。
  • 从缓存加载时,onLoad 会先于 componentDidMount。

为了避免以上问题,我们需要在 componentDidMount 时判断脚本是否已经加载完成,完成则调用脚本。onLoad 时,判断组件是否已经挂载,因为脚本可能依赖于 DOM。

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_53.html