主题页脚按钮 dependentKeys 不工作

我无法在 registerTopicFooterButton 中使用 dependentKeys此处 有文档说明)

我的代码(最小示例)

  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文档)。

总的来说,我们正试图从计算属性转向原生 getter/自动跟踪。我想我们最终必须现代化 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 + "!" 并将 topic.title 包含在 dependentKeys 中)。那也不起作用。使用 this.topic.set... 也不起作用。

1 个赞

有趣的是,如果我复制/粘贴 OP 中的示例并在本地运行,它似乎运行完美:

是否有其他主题/插件可能干扰?或者您的“真实”代码与 OP 中的最小示例相比,是否存在其他不同之处?

:thinking:

我“最小化”的代码就是我目前的“真实”代码。我将把它移到一个全新的安装中,看看是否会有任何改变。

编辑:是的,它在干净的安装上确实有效 :sob: :sob:

我将取消列出此主题,这样我就不必忍受羞耻感了 :wink:
我会在找到原因时通知你。

感谢你的帮助 @david!!

2 个赞

此话题在最后回复后30天自动关闭。不再允许新回复。