Dynamic Components in Vue

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ธ.ค. 2024

ความคิดเห็น • 53

  • @TheAlexLichter
    @TheAlexLichter  6 หลายเดือนก่อน +11

    Whoops, no premiere today folks but still a helpful video! Let me know if it helps 🙌🏻

    • @codedjango
      @codedjango 6 หลายเดือนก่อน

      sure...it helps...wasn't aware of the global style of importing components....thanks for this video 👍

  • @tolgabeyazoglu536
    @tolgabeyazoglu536 6 หลายเดือนก่อน +2

    Like your previous video on how to use the lazy component, this is a very useful video thank you

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +2

      Happy I could be of help ☺️

  • @svenvanreenen
    @svenvanreenen 6 หลายเดือนก่อน +1

    Great video Alex! Mine was really using an old JS switch case to render components dynamically but will definitely see how this can improve the case.

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Thank you Sven 🙏🏻
      Glad I could help improving your project ☺️

  • @lbmgary
    @lbmgary 6 หลายเดือนก่อน

    Love this video. For our CMS we allow the editor to select the components that will be present on any given page. To handle that we use vite to inject at build time all of these special components that our customer has access to use. Pretty simple. I really wish we could use a variable in resolve but it's probably due to knowing what component is needed at build time. idk, maybe there is another more elegant way b/c with enough components it gets a little messy on the output with all those Lazy components waiting to pop off.

  • @7iomka
    @7iomka หลายเดือนก่อน +1

    Why just not to use defineAsyncComponent with await import inside the callback in case if we don't want use global components registration?

  • @Gornius
    @Gornius 6 หลายเดือนก่อน +1

    Had no idea that Lazy components existed, but they are so useful!

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +2

      Right? Perf-wise really helpful ☺️

  • @swissmexxa
    @swissmexxa 6 หลายเดือนก่อน +2

    Problem in Nuxt, if you use a dynamic component and use useFetch (or useAsyncData) in the dynamic loaded component, the useFetch won‘t recognize the payload key in the DOM while hydrating and refetch the data on hydration. This is a big problem when working with storybloks own dynamic component. We had to create a wrapper around useFetch because of this.

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +1

      This sounds like a bug to me (remembered sth around that) - is there an open issue for it? If not, please raise one!

    • @aureutraccoredge6227
      @aureutraccoredge6227 3 หลายเดือนก่อน

      Could you elaborate on the wrapper you built? I am having a very similar problem and have been struggling to find an answer (also, Alex, thank you for the videos! learning so much)

  • @prishanf
    @prishanf 6 หลายเดือนก่อน

    Awesome video Alex. Thanks for all the good content.

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Thank you 🙏🏻
      Happy that my content is helpful ☺️

  • @shakur_t
    @shakur_t 6 หลายเดือนก่อน +1

    This was a very great and useful video, thank u for sharing it

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      You are welcome 🙌🏻

  • @Wojtasvx
    @Wojtasvx 6 หลายเดือนก่อน

    Very good tutorial, I am waiting for more!

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Thanks a lot 🙏🏻
      More is coming! 🔥

  • @valacshiro378
    @valacshiro378 6 หลายเดือนก่อน

    Amazing and helpful as always, love this videos keep it going :D
    Thank you very much for the time a effort to make this. I always leran something new 😊

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Really happy the videos help 🙏🏻
      Glad I can contribute to the Vue and Nuxt community ☺️

  • @beia-rl2dw
    @beia-rl2dw 6 หลายเดือนก่อน

    Awesome video, it is very helpful for me!!!

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Glad it helped! 🙌

  • @korbinperry
    @korbinperry 5 หลายเดือนก่อน

    By chance could you elaborate just a little, you mentioned the "flash avoidance strategy" and I perked up a bit.
    Our fairly large site has just migrated to Nuxt and we've experienced some flashing, I suspect mostly actually due to SSR / CSR issues and some changes we need to make, but perhaps this is more common than I know 😅

    • @TheAlexLichter
      @TheAlexLichter  4 หลายเดือนก่อน

      Ah, that's just some CSS to make it "automatically dark" and not have a "white -> dark" scenario. In actual apps, I'd probably go for the color mode module!

  • @Aguycalledmax
    @Aguycalledmax 6 หลายเดือนก่อน

    How would you handle dynamic components if they accepted different props?
    Is there a way to pass props within resolvecomponent or would you use something like a computed v-bind?

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +1

      I think I'd use a computed, yes 👍🏻

  • @sandros94
    @sandros94 6 หลายเดือนก่อน

    Now I'm curious if it is possible to set components as global when they come from a module/layer

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +1

      Yes, when you are in control of the module you can do so. Otherwise, you can also use a Nuxt hook to adapt that but it is a bit more manual work.

  • @KuroManX
    @KuroManX 6 หลายเดือนก่อน

    Vue dynamic components + Strapi dynamic zones, best combo for a CMS.

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +1

      Would love to see unlimited nesting of dynamic zones though (e.g. like storyblok allows) 🔥

  • @adiprimanto8871
    @adiprimanto8871 6 หลายเดือนก่อน

    anybody know how to make webpage builder? is there any library recommendations ?

  • @EvestDev
    @EvestDev 6 หลายเดือนก่อน

    Well, i have some code to update XD. Thx a bunch for the video ❤️

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      No problem at all! 😊

    • @lbmgary
      @lbmgary 6 หลายเดือนก่อน

      lol, like every time I watch something from this jerk... :)

  • @designerjehovah4453
    @designerjehovah4453 6 หลายเดือนก่อน

    Great video. Personally and I'm ashamed to say it but I've never used the to render dynamic components but rather the if/else statement. I really want to learn these tidbits of knowledge and more

    • @lovelyboy8056
      @lovelyboy8056 6 หลายเดือนก่อน

      This is because you didn’t met in a job cases where this dynamic components really need.

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +2

      if/else works for simple scenarios but as soon as you have "a couple of" components, sometimes with the same props, `` will come in super handy.

  • @TarasShabatin
    @TarasShabatin 6 หลายเดือนก่อน +2

    I guess the better name would be isAnotherDynamicComponentShown or isAnotherDynCompShown instead of isSwitched.
    Your variables' names must represent what it is storing.
    Your methods' names must represent what those methods are doing.
    Long live to Uncle Bob and "Clean Code".

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      In a real world codebase 100% 👌🏻
      In this example I wanted to keep it short 😁

  • @muratozalp3763
    @muratozalp3763 6 หลายเดือนก่อน

    Most time i dont have a boolean variable to switch components. For example let us say i have menu and select menu item or tab item. I need to change component according to menu key. In this situation, i will have to put switch case for every menu option because this won't work with dynamic variables such as resolveComponent(menuItemKey). Am i right?

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      Yes, a switch/case or (IMO better) a map with dynamic imports mapped to names of the components so you still have the lazy-loading benefits (in plain Vue)

    • @macawls
      @macawls 6 หลายเดือนก่อน

      @@TheAlexLichter Is this a good approach? I did this very recently for a project
      import * as Tabs from "../components/user-profile/tabs";
      import {
      Heart,
      Users,
      Settings,
      SlidersHorizontal,
      DollarSign,
      } from "lucide-vue-next";
      export const useProfileRoutes = () => {
      const router = useRouter();
      return {
      tabs: {
      favourites: {
      name: "favourites",
      content: Tabs.Favorites,
      icon: Heart,
      },
      friends: {
      name: "friends",
      content: Tabs.Friends,
      icon: Users,
      },
      settings: {
      name: "settings",
      content: Tabs.Settings,
      icon: Settings,
      },
      preferences: {
      name: "preferences",
      content: Tabs.Preferences,
      icon: SlidersHorizontal,
      },
      donate: {
      name: "donate",
      content: Tabs.Donate,
      icon: DollarSign,
      },
      },
      navigateToTab: (tabName: string) => {
      router.push({ path: "/profile", query: { tab: tabName } });
      },
      };
      };

  • @caiovinicius2718
    @caiovinicius2718 4 หลายเดือนก่อน

    ammmmmmmmmmmmmmmazing

    • @TheAlexLichter
      @TheAlexLichter  4 หลายเดือนก่อน +1

      Happy it helped! 🙏

  • @РодионГаврилов-ч9ж
    @РодионГаврилов-ч9ж 6 หลายเดือนก่อน

    haha)) its broken O.O

  • @Wojtasvx
    @Wojtasvx 6 หลายเดือนก่อน +7

    I think you could simplify {{ isSwitched ? "True" : "False" }} to just {{ isSwitched }}

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน +7

      Yes indeed! I am mainly used to output strings because of variables being undefined and then nothing is logged. But if it definitely is a Boolean yes 👌🏻

    • @DontFollowZim
      @DontFollowZim 6 หลายเดือนก่อน +2

      Unless of course you want it capitalized

  • @ubaydillah1535
    @ubaydillah1535 6 หลายเดือนก่อน

    i fans antfu

    • @TheAlexLichter
      @TheAlexLichter  6 หลายเดือนก่อน

      We all admire him 🔥