Avoid losing Reactivity in your Vue Application

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024

Комментарии • 80

  • @TheAlexLichter
    @TheAlexLichter  7 месяцев назад +55

    Like if you ever "lost" reactivity!

  • @Kingside88
    @Kingside88 7 месяцев назад +23

    I really like your videos because they are close to real life problems.
    Another big topic is avoiding losing reactivity with arrays.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +3

      Thank you so much 🙏
      Good point. Will write this down for another video! 👌

  • @xyronaldo
    @xyronaldo 5 месяцев назад +1

    The timing of this video is crazy. I was literally wrapping a prop in a ref and was wondering why my code was not behaving correctly. This video explanation was really helpful. Thank you for creating such an informative short video.

    • @TheAlexLichter
      @TheAlexLichter  5 месяцев назад

      That is indeed great timing 👏🏻
      Glad it helped!

  • @alimaher1
    @alimaher1 7 месяцев назад +1

    When the video came out, I watched and said to myself 'meh, it's a rare case'. Here coming back after spending more than an hour debugging my code. What a life haha! Thanks, Alexander!

    • @TheAlexLichter
      @TheAlexLichter  6 месяцев назад

      Oh wow! Sometimes coincidence is too real 😆
      Glad it helped 👏🏻

  • @gabrielserejo8379
    @gabrielserejo8379 7 месяцев назад +3

    Thanks Alex, please keep it up! I see every single video

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Definitely will! Thanks for tuning in every time 🙏

  • @cheaterman49
    @cheaterman49 5 месяцев назад

    Wow, excellent video, some of this stuff can be really confusing and isn't (AFAIK) really explained in the docs either - at least not as a whole. It's also great that you make recommendations "in passing" such as "don't destructure props" - addressing common mistakes before they happen is a great idea :-). Really a must-watch video IMHO, thanks for making it :-)

  • @LiranTal
    @LiranTal 7 месяцев назад

    Thanks for explaining this very simply, Alexander. I especially liked all the different options because you've hit the different cases I personally used. Please keep up with this type of content. I appreciate it a lot!

    • @TheAlexLichter
      @TheAlexLichter  6 месяцев назад

      Glad it was helpful Liran! 🙌🏻

  • @BricBracASMR
    @BricBracASMR 7 месяцев назад

    I'm French.
    Your content is so qualitative!
    Thank you so much!

    • @BricBracASMR
      @BricBracASMR 7 месяцев назад

      @unseriousdev oui oui baguette 😋

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +1

      Thank you for tuning in! Gald it helps 🙌✨

  • @ribl1000
    @ribl1000 7 месяцев назад +1

    high value videos -some of the best most consice vue/nuxt content out there

  • @Hassanbinsafdar-jt6uj
    @Hassanbinsafdar-jt6uj Месяц назад +1

    wowowow bro you are a gem its solved alot of issues of my vue app :) where were you thanks for the tip

  • @alibahrami6810
    @alibahrami6810 7 месяцев назад

    I must say, awesome content! keep going great, Alexander!

  • @mattickx
    @mattickx 7 месяцев назад +3

    Is there any overhead if we would use toRefs() compared of toRef() ?
    I do prefer using toRefs() and destructing that result. But I wonder if there is overhead due to it parsing all props instead just the ones you want to make reactive.
    Or is this negligible?

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +3

      Nah, toRefs is fine as long as you don’t have optional values. Then, restructuring might not work as expected 😊

    • @prishanf
      @prishanf 4 месяца назад

      Hey Alex thanks a lot the great video. I’m still confused about what is the difference between props.title vs ()=> props.title

  • @mattfletcher7321
    @mattfletcher7321 7 месяцев назад +1

    Your tutorials are very good! Would you be able to create a tutorial for writing a composable that could accept a primitive, ref, or getter? Or at least a deep dive into how vueuse or the nuxt composables handle this scenario?

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Thank you! Yes, absolutely. Noted down 👌

  • @virusblitz
    @virusblitz 7 месяцев назад

    Thanks covering this, love it when you show common pitfalls! Even with vue experience I keep making some of these :)

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      You are welcome! Glad it is helpful 🙌

  • @valacshiro378
    @valacshiro378 7 месяцев назад +1

    Thabk you this solved my problem.
    Realle good videos, keep it going this ir helpful in many ways
    😊😊

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Awesome!
      Happy to hear they help 🙏

  • @jass__0
    @jass__0 7 месяцев назад +1

    After working on react for 2 years , now moving to vue and it just amazed me. But now react making huge change by bringing its compiler hope that it wont hurt vue. Xd :) Btw, Good content.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Glad to hear that the switch to Vue was fun to you 👍🏻
      Thank you ☺️

  • @alexandros-markovits
    @alexandros-markovits 7 месяцев назад

    Nice tutorial!
    Also caution for times that objects are being passed in a component, the reactivity mechanism can end up being based on value by reference. More examples and best practices of such cases could be interesting.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +1

      Good point! It is general JS behavior but can still shoot you in the foot 🙈

  • @DeepStreamBits
    @DeepStreamBits 7 месяцев назад +3

    Would a computed() value work the same as toRef()?

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +2

      Yes, absolutely! And that'd also be my "go to" version when dealing with props or `reactive` values - especially as props are read-only anyway 👌

  • @reneeschke
    @reneeschke 7 месяцев назад +1

    I didn't know props is "reactive()" under the hood, nice! I'm surprised you didn't mention making a computed of title in the component. What's your stand here? It works, but probably not recommended?

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Yeah, `computed` would be my go-to solution here as props are read-only anyway!

    • @reneeschke
      @reneeschke 7 месяцев назад

      @@TheAlexLichter why didnt u include the computed workflow in the video, then? just curious.
      you mean props are read only, right? refs can be changed? or am I crazy now 😂

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Good question. Should've shown it too as an option, even though computed has a slight overhead (because it adds a dependency check)
      Yup, you are right - Updated my comment 😂

  • @youhan96
    @youhan96 7 месяцев назад

    Great explanation Alex! Made complete sense!

  • @nines_99
    @nines_99 7 месяцев назад +2

    probably i should read docs, but the obvious question is: what’s the difference between computed and toRef? why didn’t you use computed? and instead used toRef?

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +3

      Computed would be my go-to for props.
      When having other reactives, toRef allows to sync between the values in both ways!

    • @nines_99
      @nines_99 7 месяцев назад

      @@TheAlexLichter ooh, i didn’t know that, thank you!

  • @vuenice
    @vuenice 7 месяцев назад +1

    Which title will be considered in template, props.titile or toRef(...)

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      The more explicit one (so const title > props.title) in the template

  • @top10acousticshowslist77
    @top10acousticshowslist77 6 месяцев назад +2

    nice information not many people talk about this simple but important concept.♥♥♥

  • @Like_a_lion_979
    @Like_a_lion_979 7 месяцев назад

    Thank for the video, really useful. I wonder is there a way to use somehow toRefs to not lose reactivity?

    • @JiveOff
      @JiveOff 7 месяцев назад +1

      From experience, toRefs can be used with the output of defineProps, which then would make all props reactive if you use the output of toRefs.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +1

      You are welcome!
      With toRefs, you won't lose the reactivity (as shown) ✔

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +1

      toRef is useful for *optional* props (which are not covered via toRefs if they don't exist)!

  • @hassankadhim5465
    @hassankadhim5465 7 месяцев назад +1

    🔥🔥

  • @LujzaPoroknovcova
    @LujzaPoroknovcova Месяц назад

    Nice video as always but the example with title passed as props and then mutated thanks to toRef is not the best as props shouldn't be mutated.😊

    • @TheAlexLichter
      @TheAlexLichter  Месяц назад

      Yes, that's true! Also mentioned that in the comments before. On the other hand, a `computed` is less performant (+ there is the readonly helper)

  • @yunusemrefersiz2848
    @yunusemrefersiz2848 3 месяца назад

    An Other great video ty Alex

  • @Gaijin101
    @Gaijin101 7 месяцев назад

    Wonder if we ever gonna get a simpler ref vs reactive | useFetch vs $fetch.
    Its not very intuitive for most beginners.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      Great idea Damian! Will put it on the list 👌

  • @ngetichishmael
    @ngetichishmael 7 месяцев назад

    This solves a lot of my problems 😂.

  • @karshten9218
    @karshten9218 6 месяцев назад

    Thanks a lot

  • @freekeys
    @freekeys 3 месяца назад

    Exactly.... We shouldn't destructuring the props 💯, i used to do in my initial days🤦😂

    • @TheAlexLichter
      @TheAlexLichter  3 месяца назад

      And you will be able to again in Vue 3.5 with the (in 3.4 experimental) props destructuring feature 👀

    • @freekeys
      @freekeys 3 месяца назад

      @@TheAlexLichter so props destructuring won't lose the reactivity in vue 3.5 feature?🤔

    • @TheAlexLichter
      @TheAlexLichter  3 месяца назад

      @freekeys yup! Check out the RFC @ github.com/vuejs/rfcs/discussions/502

    • @freekeys
      @freekeys 3 месяца назад

      @@TheAlexLichter so pinia would also do it, current i need to use storeToRef in pinia. 🤦😂

    • @TheAlexLichter
      @TheAlexLichter  3 месяца назад

      I still would go for storeToRefs because you get refs, not „reactive“

  • @kirayamato6128
    @kirayamato6128 7 месяцев назад

    auto import is not quite good. other devs will have a headache debugging or reading the code.

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад +2

      I'd argue that it is the opposite. For me, importing ref/computed/... all the time even though it is obvious that it comes from Vue creates more noise in the code. And because TS intellisense + "go to" still works, I can easily check where things come from if needed.
      But you can also make it work without auto imports if you prefer it 😊

  • @杨磊-t6s
    @杨磊-t6s 5 месяцев назад

    I think you're left-handed 5:10

  • @ricko13
    @ricko13 7 месяцев назад +4

    the .value thing is so annoying sometimes :/

    • @TheAlexLichter
      @TheAlexLichter  7 месяцев назад

      I actually think it is useful
      When using TS the IDE should autocomplete it 🙌🏻
      And then you know if the value you deal with is reactive or not 👌🏻