ReactでCloudinaryアップロードウィジェットを実装する方法は?

AlexisThink

ReactアプリでCloudinaryアップロードウィジェットを使用しようとしていますが、問題があります。プロジェクトを実行すると、アップロードウィジェットがすぐに表示されますが、閉じて再度開くと、アプリがクラッシュし、次のメッセージが表示されます。

widget.open()は関数ではありません

注:アップロードは正しく機能します

import React, { Component } from 'react';
import './App.css';

class App extends Component {
  showWidget = (widget) => {
    widget.open();
  }

  checkUploadResult = (resultEvent) => {
    if(resultEvent.event === 'success'){
      console.log(resultEvent)
    }
  }
  render() {
      let widget = window.cloudinary.openUploadWidget({
      cloudName: "*********",
      uploadPreset: "tryingfirsttime"},
      (error, result) => {this.checkUploadResult(result)});

    return (
      <div className="App">
        <button onClick={this.showWidget}> Upload file</button>
      </div>
    );
  }
}

export default App;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<script src="https://widget.cloudinary.com/v2.0/global/all.js" type="text/javascript"></script> 

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ダニエルメンドーサ

まず、問題を理解しましょう。Cloudinaryアップロードウィジェットはコンポーネントのレンダリング関数で定義され、そのコンポーネントがレンダリングされると、の機能で定義されているため、アップロードウィジェットが開きopenUploadWidgetます。次に、ウィジェットはレンダリング関数のスコープ内でのみ定義されており、ウィジェットの外部からはアクセスできないため、エラーが発生しますwidget.open() is not a function

これらの問題を解決するには、まずウィジェットをローカル変数または状態の一部として定義することから始めます。これは、コンポーネントの一部としてコンストラクターを含めることによって行われます。

constructor(props) {
   super(props)

   // Defined in state
   this.state = { . . . }

   // Defined as local variable
   this.widget = myLocalVariable
}

使用するには、Cloudinaryアップロードウィジェットのインスタンスを作成する際に行うには次のものがありcreateUploadWidgetませんし、openUploadWidgetウィジェットを開くときの制御を可能にし、。

constructor(props) {
   super(props)
   // Defined in state
   this.state = {
      widget: cloudinary.createUploadWidget({
         cloudName: 'my_cloud_name', 
         uploadPreset: 'my_preset'}, 
         (error, result) => { 
            if (!error && result && result.event === "success") { 
               console.log('Done! Here is the image info: ', result.info); 
            }
         }
      })
    }
    // Defined as local variable
    this.widget = cloudinary.createUploadWidget({
       cloudName: 'my_cloud_name', 
       uploadPreset: 'my_preset'}, (error, result) => { 
         if (!error && result && result.event === "success") { 
           console.log('Done! Here is the image info: ', result.info); 
         }
       }
    })
 }

最後に、showWidgetクリックイベントは、ウィジェットを引数として渡す必要がなく(コンポーネントでローカルに定義されているため)、thisキーワードで参照することもできます現在のコンポーネントを参照するには、キーワードthisを含める必要があることに注意してください。

showWidget = () => {
  this.widget.open();
}

最終結果を示すJSFiddleを含めました:https://jsfiddle.net/danielmendoza/fve1kL53/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

cloudinaryウィジェットUIで画像をアップロードしながらメタデータを取得する

分類Dev

他のウィジェットでQSpinboxにアプローチする方法は?

分類Dev

DDDベースのアプリケーションでチェックアウトを実装する方法は?

分類Dev

角度6で選択ドロップダウンを実装する方法(検索でフィルター)、名前プロパティでオブジェクトをフィルターする方法

分類Dev

フラッターでドロップダウンリストを実装する方法は?

分類Dev

プロパティのみのプロトコルを実装するオブジェクトを「モックアウト」する最も簡単な方法

分類Dev

MeteorでTwitterウィジェットのような外部スクリプトをロードする方法は?

分類Dev

icCubeドロップダウンウィジェット-選択したアイテムを取得する方法は?

分類Dev

Railsとアクティブストレージを使用してAWSS3マルチパートアップロードを実装する方法は?

分類Dev

Angularjs:Cloudinaryアップロードウィジェットの事前入力検索フィールド

分類Dev

Zendでファイルアップロードを実装する方法は?

分類Dev

UploadcareウィジェットにminDimensionsを実装する方法

分類Dev

サイクルホイールスクロールリストウィジェットを実装する方法

分類Dev

Jquery MultiSelectウィジェットを正しく実装する方法は?

分類Dev

BLoCを実装するウィジェットは必然的にStatefulWidgetsですか?

分類Dev

Bokehで複数選択ウィジェットのJavascriptコールバックを実装する方法

分類Dev

node js apiを使用してJavaScriptファイルオブジェクトをCloudinaryにアップロードする方法は?

分類Dev

アンドロイドでFacebookアカウントキットの即時検証を実装する方法は?

分類Dev

onclickでコードを実行するウィジェット

分類Dev

Pytorchでドロップアウトを実装する方法と、それを適用する場所

分類Dev

ドロップアウトを最初から実装する

分類Dev

アルファベット順ではなくインターフェイスプロパティを実装する方法

分類Dev

外部JavaScriptコードを使用してBokehプロットまたはウィジェットにアクセスして更新する方法は?

分類Dev

アポストロフィCMS:ウィジェットでアップロードされたファイルにアクセスする方法

分類Dev

Unityプロジェクトの実行をスピードアップする方法は?

分類Dev

MVCでMultiSelectドロップダウンリストを実装する方法

分類Dev

Ipython Notebookで複数ファイルのアップロードウィジェットを作成するにはどうすればよいですか?

分類Dev

Angular Dartでグリッドレイアウトを実装する方法は?

分類Dev

剣道UIアップロードウィジェットを使用するページにプログラムでファイルをアップロードする方法

Related 関連記事

  1. 1

    cloudinaryウィジェットUIで画像をアップロードしながらメタデータを取得する

  2. 2

    他のウィジェットでQSpinboxにアプローチする方法は?

  3. 3

    DDDベースのアプリケーションでチェックアウトを実装する方法は?

  4. 4

    角度6で選択ドロップダウンを実装する方法(検索でフィルター)、名前プロパティでオブジェクトをフィルターする方法

  5. 5

    フラッターでドロップダウンリストを実装する方法は?

  6. 6

    プロパティのみのプロトコルを実装するオブジェクトを「モックアウト」する最も簡単な方法

  7. 7

    MeteorでTwitterウィジェットのような外部スクリプトをロードする方法は?

  8. 8

    icCubeドロップダウンウィジェット-選択したアイテムを取得する方法は?

  9. 9

    Railsとアクティブストレージを使用してAWSS3マルチパートアップロードを実装する方法は?

  10. 10

    Angularjs:Cloudinaryアップロードウィジェットの事前入力検索フィールド

  11. 11

    Zendでファイルアップロードを実装する方法は?

  12. 12

    UploadcareウィジェットにminDimensionsを実装する方法

  13. 13

    サイクルホイールスクロールリストウィジェットを実装する方法

  14. 14

    Jquery MultiSelectウィジェットを正しく実装する方法は?

  15. 15

    BLoCを実装するウィジェットは必然的にStatefulWidgetsですか?

  16. 16

    Bokehで複数選択ウィジェットのJavascriptコールバックを実装する方法

  17. 17

    node js apiを使用してJavaScriptファイルオブジェクトをCloudinaryにアップロードする方法は?

  18. 18

    アンドロイドでFacebookアカウントキットの即時検証を実装する方法は?

  19. 19

    onclickでコードを実行するウィジェット

  20. 20

    Pytorchでドロップアウトを実装する方法と、それを適用する場所

  21. 21

    ドロップアウトを最初から実装する

  22. 22

    アルファベット順ではなくインターフェイスプロパティを実装する方法

  23. 23

    外部JavaScriptコードを使用してBokehプロットまたはウィジェットにアクセスして更新する方法は?

  24. 24

    アポストロフィCMS:ウィジェットでアップロードされたファイルにアクセスする方法

  25. 25

    Unityプロジェクトの実行をスピードアップする方法は?

  26. 26

    MVCでMultiSelectドロップダウンリストを実装する方法

  27. 27

    Ipython Notebookで複数ファイルのアップロードウィジェットを作成するにはどうすればよいですか?

  28. 28

    Angular Dartでグリッドレイアウトを実装する方法は?

  29. 29

    剣道UIアップロードウィジェットを使用するページにプログラムでファイルをアップロードする方法

ホットタグ

アーカイブ