1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Aktualisieren von Propierties mittels Watcher

    • JavaScript
  • Syntafin
  • 24. Juni 2024 um 20:10
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 24. Juni 2024 um 20:10
    • #1

    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.

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 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
    Punkte
    7.925
    Beiträge
    1.439
    • 25. Juni 2024 um 04:48
    • #3

    Jap, aber leider wird die Variable selbst nicht geupdatet.

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 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
    Punkte
    7.925
    Beiträge
    1.439
    • 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.

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 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
    Punkte
    7.925
    Beiträge
    1.439
    • 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 :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"

  • Blacksonny
    Punkte
    2.768
    Beiträge
    505
    • 25. Juni 2024 um 21:13
    • #8

    Immerhin hast du eine Lösung gefunden:D

Tags

  • javascript
  • typescript
  • VueJS
  • frontend
  1. Datenschutzerklärung
  2. Impressum