トピックフッターボタンのdependentKeysが機能しない

registerTopicFooterButtondependentKeys を機能させるのに問題があります(こちら に記載)

私のコード(最小限の例)

  api.registerTopicFooterButton({
    id: "my-topic-footer-button",
    action() {
      this.topic.updateTags(["my-tag"]);
    },
    title() {
      return "my.button.title";
    },
    label() {
      return "my.button.label";
    },
    dependentKeys: ["topic.tags"],
    disabled() {
      return this.topic.tags.includes("my-tag");
    }
  });

期待される動作:ボタンを押すと、トピックのタグが my-tag に設定され(これは機能します)、ボタンの再レンダリングがトリガーされて無効になります。
期待される動作:タグを手動で追加すると、ボタンが無効になります。

実際:どちらのシナリオでも再レンダリングはトリガーされません。

ボタンはページリフレッシュ時に正しく無効/有効になります。

私の間違いを見つけられる方はいらっしゃいますか?

「いいね!」 1

topic.tags に依存する算出プロパティは、配列自体が置き換えられたときに無効になります。しかし、配列に項目が追加または削除されたときには無効になりません。

そのため、おそらく topic.tags.@each (ドキュメント) を使用したいのだと思います。

一般的に、算出プロパティからネイティブゲッター/オートトラッキングへと移行しようとしています。topic-footer-buttons API も、いつかはそれをサポートするために近代化する必要があると思います :thinking:

「いいね!」 2

Davidさん、迅速なご対応ありがとうございます!

しかし、topic.tags.@each を使用しても解決しません。(タグを手動で追加した場合も、ボタンを押した場合も同様です。)
disabled() 関数内の console.log は実行されません。displayed() 内でも実行されません。

「いいね!」 1

ボタンをクリックすると、新しいタグがトピックの先頭に正しく表示されますか?

「いいね!」 1

はい、うまくいきます。

this.topic.notifyPropertyChange("tags"); も試しました。

そして、絶望して他のプロパティを操作しようとさえしました(this.topic.title = this.topic.title + "!" のように、dependentKeystopic.title を含めるなど)。それも機能しません。this.topic.set... を使用しても機能しません。

「いいね!」 1

興味深いことに、OPの例をコピー/ペーストしてローカルで実行すると、完全に機能するようです。

他に干渉している可能性のあるテーマやプラグインはありますか?それとも、OPの最小限の例と比較して、あなたの「実際の」コードには何か違いがありますか?

:thinking:

私の「最小限の」コードは、現時点では私の「実際の」コードです。完全にクリーンなインストールに移動して、何かが変わるかどうかを確認します。

編集:はい、クリーンなインストールで機能します:sob: :sob:

このトピックはリストから削除します。恥ずかしい思いをしないように :wink:
原因がわかったら、またお知らせします。

@davidさん、ありがとうございました!

「いいね!」 2

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。