Réduire les appels à une API

Bonjour à tous,
Quelle est votre méthode pour réduire les appels à une API ?
Par exemple : j'ai une liste de produits et lorsque je clique sur un produit, une nouvelle vue s'affiche avec le détail du produit.
Actuellement si je reviens en arrière sur la liste des produits, l'API est à nouveau appelé en raison du fait que le traitement se fait dans onAppear comme ci-dessous :

 var body: some View {
    Group {
        List {

                ForEach(theProduct, id: \.self) { p in
                    NavigationLink(destination: ProductDetail(theProduct: p)) {
                        ThemeDetailRow(theProduct: p)
                    }
                }.navigationBarTitle("Détail", displayMode: .inline)

        }
    }.onAppear {
        print("View appeared!")
        loadProducts(page: 1)
        print("- page 1 -")

    }

}

J'ai vu Redux pour swift dans certain projet mais c'est bien trop complexe pour moi.
Merci.

Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur

    SwiftUI ou pas, c'est le même problème.
    Les données doivent être conservées dans la couche "Modèle" du MVC.

    Pour te donner un exemple, dans notre appli, nous avons une commande de synchro et les données sont stockées en base de données (base SQLite gérée à travers GRDB). Aussi, il n'y a pas de chargement au moment de l'affichage. Je ne dis pas que tu dois faire de même, mais ça doit t'aider à comprendre qu'il faut décoréler le modèle (les données et leur traitement dans une optique «business») et leur affichage.

  • Merci pour les infos.
    Mais si il n'y a pas de chargement au moment de l'affichage, dans une application dans laquelle on souhaite par exemple la page "liste des produits", à quel moment tu vas charger l'ensemble des produits provenant d'une API ?

  • @helio a dit :
    Merci pour les infos.
    Mais si il n'y a pas de chargement au moment de l'affichage, dans une application dans laquelle on souhaite par exemple la page "liste des produits", à quel moment tu vas charger l'ensemble des produits provenant d'une API ?

    Avant l’affichage, à la création de l’objet contenant le modèle de données. Éventuellement un chargement asynchrone, avec un indicateur de chargement binaire de sorte que l’affichage puisse consulter le modèle pour savoir si les données sont prêtes, ou afficher quelque chose pour faire patienter l’utilisateur (un message ou une roue tournante).

    Je ne l’ai jamais fait, mais c’est ce que je ferais si nécessaire.

Connectez-vous ou Inscrivez-vous pour répondre.