ElementUI の this.$notify.close() 呼び出しが機能しない問題の解決方法

ElementUI の this.$notify.close() 呼び出しが機能しない問題の解決方法

要件の説明

このプロジェクトでは、まずユーザーが質問を選択する必要があります。選択後、ElementUI の Notification コンポーネントを使用して、ファイル形式がチェック中であることをユーザーに通知します (最初にバックエンドに送信し、バックエンドでチェックしてから、結果をフロントエンドに返す必要があります)。フォーマット チェックが正しければ、通知が閉じられ、アップロードされたファイルは元に戻せないことをユーザーに通知するメッセージ ボックス (ElementUI のコンポーネント) がポップアップ表示されます。

問題の説明

ファイル形式が正しいかどうかを確認した後、通知を削除するには関連する関数を手動で呼び出す必要があります。公式ドキュメントによると、 this.$notify.close()を使用しても機能せず、コンソールにエラーは報告されませんでした。

問題分析

コンソールにthis.$notifyを出力した後、以下に示すように通知関連の関数を入力できます。

コンソールのソースパネルの下のコード

コードでは、id と userOnClose という 2 つのパラメータを必要とするclose()関数など、Notification 内にカプセル化されている関数を確認できます。コードから、id が Notification の ID であることがわかるのは難しくありません。たとえば、Notification が複数ある場合、それらを選択的に閉じることができます。userOnClose は、コールバック関数に少し似た関数を渡すことができます。したがって、 close()関数を使用する場合は、閉じる通知の ID を知っている必要があります。これについては、この記事の最後で簡単に説明します。
コードを見てみると、パラメータを必要とせず、トラバースによってすべての Notification を閉じるcloseAll()関数があることがわかります。これは、このプロジェクトのシナリオに適しています (閉じる必要がある Notification は 1 つだけです)。

問題解決

このプロジェクトでは、 this.$notify.closeAll()を呼び出すだけです。

質問の拡張

重要なのは、通知が複数ある場合、そのうちの 1 つを閉じたい場合はどうすればいいかということです。私はnotify.jsを理解しようとしましたが、idは基本的にnotification_seedのようなパターンであり、これはnotification_文字列と数字で構成される文字列であることがわかりました。ソース コードを見ると、初期seedは 1 であることがわかります。つまり、最初にインスタンス化された Notification の ID はnotification_1になります。図に示すように:

ここに画像の説明を挿入

ここで問題が発生します。close() 関数を呼び出して、正しいと思われる 2 つのパラメータを渡しましたが、機能しません。

ここに画像の説明を挿入

ID の誤解を防ぐために、ブラウザでデバッグしたところ、インスタンス (Notification のインスタンス) の ID が実際に分析した ID であることがわかりました。

ここに画像の説明を挿入

そこで、開発者ツールのデバッグ ツールを使用して、notify.js のclose()関数の実行手順を段階的に確認しました。コードやロジックに問題はないことがわかりました。最後に、インスタンスは splice 関数を通じて対応する ID を持つ Notification も削除しましたが、ページ上の Notification はそのまま残り、消えませんでした (メイン関数は長方形のボックス内にあります)。

ここに画像の説明を挿入

上記は、私が個人的に分析を試みた結果の一部です。もちろん、私の能力が限られているため、結局は問題を解決できませんでした。興味のある人は勉強してみてください。

ElementUI の this.$notify.close() 呼び出しが機能しない問題を解決する方法についての記事はこれで終わりです。Element this.$notify.close() 呼び出しに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは要素内の$notifyを使用してプロンプト情報の改行の問題を解決します

<<:  MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

>>:  Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

推薦する

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...

HTML インライン要素と HTML ブロックレベル要素の概要と違い

ブロックレベル要素の機能: • 常に新しい行から始まり、それ自体で 1 行を占め、後続の要素も新しい...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

vue3 学習ノートにおける axios の使用の変更の概要

目次1. axioの基本的な使い方2. クロスドメインの問題を解決するには? 3. パッケージ4. ...

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

SQL IDENTITY_INSERT ケーススタディ

一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

MySQL 全体または単一のテーブルデータのエクスポート

単一のテーブルをエクスポートするmysqldump -u ユーザー -p db名 テーブル名 >...

メッセージボードにメッセージを追加および削除するための JavaScript

この記事では、JavaScript メッセージ ボードでメッセージを追加および削除する小さな例を詳細...

Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

目次テクノロジースタック効果分析するテクノロジースタックサイドバー用Antdtabは要素を使用します...

vue-cli4.5.xはプロジェクトを素早く構築します

1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...

Docker の win ping 失敗コンテナ回避ガイド

win docker-desktopを使ってコンテナ開発に接続し、ネットワーク上で色々試してみたいと...

MySQL実行計画を学ぶ

目次1. 実施計画の概要2. 実行計画の実践id:選択タイプ:テーブル:タイプ:可能なキー:鍵:キー...

MySQL 並列レプリケーションの簡単な分析

01 並列レプリケーションの概念MySQL のマスター スレーブ レプリケーション アーキテクチャで...

VMware 仮想マシンのインストール CentOS 8 (1905) システム チュートリアル ダイアグラム

世界的に有名な仮想マシン ソフトウェア VMware-workstation-full-15.5.0...