簡體   English   中英

在JSX文件中訪問非es6 npm模塊功能

[英]Access non es6 npm module functions within JSX file

我想使用我最近npm安裝的模塊。 我想從jsx文件中使用它,但是如果您願意,我不知道如何“導入”它。 在此模塊的文檔中沒有執行此操作的示例,並且我認為這只是有關如何使用它的常識-我找不到/沒有的知識。

我認為該模塊沒有任何“出口”。 它只有一個dist文件夾,其中帶有.js源代碼。

如何從jsx文件中訪問此模塊的功能? 我需要一些import方式嗎?

rangeslider.js的用法文檔包含一個代碼示例:

<script src="jquery.min.js"></script>
<script src="rangeslider.min.js"></script>
<script>
    // Initialize a new plugin instance for all
    // e.g. $('input[type="range"]') elements.
    $('input[type="range"]').rangeslider();

    // Destroy all plugin instances created from the
    // e.g. $('input[type="range"]') elements.
    $('input[type="range"]').rangeslider('destroy');

    // Update all rangeslider instances for all
    // e.g. $('input[type="range"]') elements.
    // Usefull if you changed some attributes e.g. `min` or `max` etc.
    $('input[type="range"]').rangeslider('update', true);
</script>

在React中使用jquery插件是一種反模式。 大多數時候,社區中的人們會將舊的jquery庫移植到React組件。 這是RangeSliderReact組件

但是您仍然可以使用舊的jquery插件。

您需要在index.html<head>中包括用於jquery和rangelider的腳本標記。

然后,在組件中,您需要添加范圍輸入:

<input
    type="range"
    min="10"                    // default 0
    max="1000"                  // default 100
    step="10"                   // default 1
    value="300"                 // default min + (max-min)/2
    data-orientation="vertical" // default horizontal
    ref={ref => this.range = ref}
>

並且您需要在componentDidMount生命周期方法中初始化插件:

componentDidMount() {
    $('input[type="range"]').rangeslider();
}

那應該是您使其工作所需的全部!

您還可以考慮使用ref作為輸入,以便可以執行以下操作:

componentDidMount() {
    this.range.rangeslider();
}

這取決於您要導入的庫如何導出其代碼。 如果他們有一個模塊定義塊,那么你可以嘗試使用或者將其導入importrequire您的模塊中的語法。 通常,您可以通過查看源代碼中看起來像這樣的代碼塊來發現這一點

if(typeof define === "function" && define.amd) {
    define(["postal"], factory);
  } else if(typeof module === "object" && module.exports) {
    module.exports = factory(require("postal"));
  } else {
    root.myModule = factory(root.postal);
  }

如果庫只是將函數/變量添加到全局名稱空間,則可以在HTML中包含帶有<script>標記的庫,然后直接從組件內部調用這些函數,例如window.someFunction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM