私は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オブジェクトにアクセスできないようです。
それは残念です!
また、公式のAPI関数を使用するためのラッパーコードはバージョン管理されており、次のようになっているため、どのように正しくimportすればよいかわかりません。
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("0.12.3", api => {
// ここでapiを使用するコード
});
setComponent()内からapiオブジェクトにアクセスするにはどうすればよいですか?それとも、何か根本的なことを見落としていますか?