Secondo me, non è un problema di "integrazione", ma di strutturazione del codice JavaScript.

Ad esempio, quando scrivi
codice:
this.items = data.books;
this.isLoading = false;
tu sei sicuro che quel this corrisponda all'oggetto che intendi tu?

Si tratta di una Arrow Function: hai capito bene nel dettaglio come funzionano?