Aktualisieren von Propierties mittels Watcher

  • Hallöchen erneut, mit einer Frage :/

    Folgendes Problem:
    Ich habe ein System zum Folgen von Nutzern in meinem System, nun möchte ich das die Liste sich im Profil direkt aktualisiert, sollte man einem Nutzer folgen. Wenn ich das bei einem Nutzer mache wo man zwischen den Test-Accounts bereits "gefolgt ist" klappt das beim folgen/entfolgen auch prima. Nur eben... nicht wenn zuvor nicht.

    Grundlegende Idee war, es mittels Watcher zu lösen:

    JavaScript
    let user = usePage().props.user;
    
    watch(user, (newUser, oldUser) => {
        user = newUser;
    });

    Das klappt sogar.... Nur mein Problem ist, das user selbst nicht updatet, nur page.props.user eben, weiß hier jemand meinen Fehler?

    Also innerhalb des Setups wird es nicht geändert, es taucht dann aber unter attrs ebenfalls auf:


    Falls das jemandem hilft bei der Lösung zu helfen.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • JavaScript
    import { toRef, watch } from "vue";
    let user = toRef(usePage().props.user);
    watch(user, (newUser, oldUser) => {
        user.value = newUser;
        });


    Sieht aktuell so aus, leider bleibt user stets gleich, nur unter den Attributen wird es geupdatet.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Mal ein wenig die Dokus dazu angeschaut, Deep klingt nicht sonderlich gut, wenn man bedenkt das es "größer" werden könnte.
    Was ich nun rausgefunden habe, das ich auf das Attribut zugreifen kann direkt, und es tatsächlich sich dort updatet... die Lösung missfällt mir nur aus rein ästhetischen Gründen :D

    Da so dann statt v-for="item in user.follower" das ganze so schreiben muss: v-for="item in $page.props.auth.user.follower"

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!