Accedere all'API da un componente

Sto sperimentando con i temi di Discourse ma non sono uno sviluppatore web/Javascript. Guardando alcuni componenti tematici di terze parti, ho questa domanda.

In discourse-header-submenus/javascripts/discourse/connectors/above-site-header/header-submenus.js, c’è questo codice:

export default {
  setupComponent() {
    // some code here
  },
};

Non ci sono importazioni all’inizio del file.

Se capisco bene il Javascript (strict), l’unico contesto a cui il codice all’interno di setupComponent() avrà accesso sono gli attributi dell’oggetto su cui viene valutato.

Quando guardo questo contesto usando console.log(this) all’interno della funzione setupComponent(), sembra che io non abbia accesso all’utile oggetto api.

Che peccato!

Inoltre, non saprei come importarlo correttamente poiché il codice wrapper ufficiale per l’utilizzo delle funzioni api è versionato e appare così:

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

export default apiInitializer("0.12.3", api => {
    // code that uses the api here
});

Come potrei accedere all’oggetto api da setComponent()? O mi manca qualcosa di fondamentale qui?

1 Mi Piace

Capito, è fatto così:

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

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

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