1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Aktualisieren von Propierties mittels Watcher

    • JavaScript
  • Syntafin
  • 24. Juni 2024 um 20:10
  • Unerledigt
  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.783
    Trophäen
    2
    Beiträge
    1.414
    • 24. Juni 2024 um 20:10
    • #1

    Hallöchen erneut, mit einer Frage :thinking_face:

    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...

  • Blacksonny
    16
    Blacksonny
    Moderator
    Reaktionen
    138
    Punkte
    2.673
    Trophäen
    1
    Beiträge
    487
    • 24. Juni 2024 um 23:03
    • #2

    Hast du mal probiert die Variable user reaktiv zu machen? Ich meine genau dafür ist reaktiv da, um auf ein Ereignis oder eine Statusänderung an einer anderen Stelle im Code zu reagieren.

    JavaScript
    const user = ref(usePage().props.user);
  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.783
    Trophäen
    2
    Beiträge
    1.414
    • 25. Juni 2024 um 04:48
    • #3

    Jap, aber leider wird die Variable selbst nicht geupdatet.

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

  • Blacksonny
    16
    Blacksonny
    Moderator
    Reaktionen
    138
    Punkte
    2.673
    Trophäen
    1
    Beiträge
    487
    • 25. Juni 2024 um 10:07
    • #4
    JavaScript
    const user = ref(usePage().props.user);
    
    watch(() => usePage().props.user, (newUser, oldUser) => {
          user.value = newUser;
    });

    Versuch es mal bitte so

  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.783
    Trophäen
    2
    Beiträge
    1.414
    • 25. Juni 2024 um 12:25
    • #5
    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...

  • Blacksonny
    16
    Blacksonny
    Moderator
    Reaktionen
    138
    Punkte
    2.673
    Trophäen
    1
    Beiträge
    487
    • 25. Juni 2024 um 12:33
    • #6

    Du könntest noch versuchen in der watch „immediate: true“ (für das sofortige Ausführung bei der Initalisierung von watch) oder „deep: true“ (für die tiefer verschalteten Änderungen zu erkennen) zu nutzen

  • Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.783
    Trophäen
    2
    Beiträge
    1.414
    • 25. Juni 2024 um 19:33
    • #7

    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 :grinning_squinting_face:

    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...

  • Blacksonny
    16
    Blacksonny
    Moderator
    Reaktionen
    138
    Punkte
    2.673
    Trophäen
    1
    Beiträge
    487
    • 25. Juni 2024 um 21:13
    • #8

    Immerhin hast du eine Lösung gefunden:grinning_squinting_face:

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Tags

  • javascript
  • typescript
  • VueJS
  • frontend

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern