Учитывая приведенный ниже код, как мне получить доступ к содержимому ImmutableJS после выполнения функции loadscript?

import immutableJsStaticResource from 
'@salesforce/resourceUrl/immutable_3_8_2';
import { loadScript } from 'lightning/platformResourceLoader';
.
.
.
loadScript(lwcComponent, immutableJsStaticResource).then(
    () => {
    // How do I do to access { List } from Immutable JS here?
    }
);
-1
Saulo 21 Окт 2019 в 17:24

2 ответа

Из документации immutableJS вы должны использовать Immutable.List

import { loadScript, loadStyle } from 'lightning/platformResourceLoader';
import { LightningElement } from 'lwc';
import immutablejs from '@salesforce/resourceUrl/immu';
export default class Thirdparrtydemo extends LightningElement {

    isImmutableJSInitialized = false;
    renderedCallback() {
        if(this.isImmutableJSInitialized){
            return;
        }
        this.isImmutableJSInitialized = true;
         Promise.all([
                    loadScript(this, immutablejs )
            ]).then(() => {

                     const list1 = Immutable.List([ 1, 2 ]);
                     const list2 = list1.push(3, 4, 5);
                     const list3 = list2.unshift(0);
                     const list4 = list1.concat(list2, list3);
                     console.log(list1.size);
        })
    }
}
0
Pranay Jaiswal 21 Окт 2019 в 18:02

Вы можете сделать это вот так.

  • Сначала загрузите модуль platformResourceLoader.

    import { loadScript, loadStyle } from 'lightning/platformResourceLoader';

  • Импортируйте стороннюю библиотеку из статического ресурса.

    import D3 from '@salesforce/resourceUrl/yourResource';

  • Позвоните loadscript в renderedcallback, используя Promise.all.

Ниже показано, как загружается D3 js.

// libsD3.js
import { LightningElement } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import { loadScript, loadStyle } from 'lightning/platformResourceLoader';
import D3 from '@salesforce/resourceUrl/d3';
import DATA from './data';

export default class LibsD3 extends LightningElement {
    svgWidth = 400;
    svgHeight = 400;

    d3Initialized = false;

    renderedCallback() {
        if (this.d3Initialized) {
            return;
        }
        this.d3Initialized = true;

        Promise.all([
            loadScript(this, D3 + '/d3.v5.min.js'),
            // you can call multiple here.
        ])
            .then(() => {
                // this block is executed on successful loading.
                // do your stuff here.
            })
            .catch(error => {
                this.dispatchEvent(
                    new ShowToastEvent({
                        title: 'Error loading D3',
                        message: error.message,
                        variant: 'error',
                    }),
                );
            });
    }
}

Обратитесь к документу

0
Rahul Gawale 21 Окт 2019 в 18:03