从组件访问api

我正在尝试使用 Discourse 主题,但我不是 Web/Javascript 开发人员。查看一些第三方主题组件,我有了这个疑问。

discourse-header-submenus/javascripts/discourse/connectors/above-site-header/header-submenus.js 中,有这段代码:

export default {
  setupComponent() {
    // 一些代码
  },
};

文件顶部没有导入。

如果我理解(严格的)JavaScript,setupComponent() 中的代码只能访问它正在评估的对象属性。

当我在 setupComponent() 函数中使用 console.log(this) 查看此上下文时,我似乎无法访问非常有用的 api 对象。

太可惜了!

另外,我不知道如何正确地 import 它,因为用于使用 api 函数的官方包装器代码是版本化的,看起来像这样:

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("0.12.3", api => {
    // 使用 api 的代码
});

我该如何从 setComponent() 中访问 api 对象?或者我错过了什么基本的东西?

1 个赞

明白了,它是这样做的:

import { withPluginApi } from "discourse/lib/plugin-api";

export default {
    setupComponent() {
        withPluginApi("0.12.3", api => {
            console.log(api.getCurrentUser());
        });
    },
};
2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.