• andrewbrey@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    I really like how with React (and a few others) you can make a quick abstraction in the same file for a repeated chunk of the render. Sometimes something warrants pulling out into a function for reusability but it doesn’t quite pass the bar to justify its own file as a component - I know there’s some template stuff coming in Svelte 5, so hopefully that scratches the itch.

    • silas@programming.devOPM
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      Totally agree, I can definitely say I’ve found myself wishing for that more as I continue to use Svelte. I didn’t see it as necessary at first, but situations that could benefit from that have come up enough now that I’ve used it for a while

  • eluvatar@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Kinda wish it had DI, coming from Angular and C# it’s so helpful to have stateful services, I know one answer is to just use a global static, but that causes huge issues on the server side and it’s really easy to make mistakes there. It feels like contexts are the answer, but then you can’t use those services in load functions.

    I’m curious where do you store the current user data. In a static store? Return it from a load function and access it via the page store? Somewhere else?

    • silas@programming.devOPM
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Well, I usually fetch and return user data from a top-level +layout.js or +layout.server.js. Then my user data is always available in every layout or page through the data prop (and types are all handle automatically for this too).

      I then invalidate and re-fetch that data using invalidate(), invalidateAll(), and depends() if the user data becomes stale.

      Any state/data from the user that needs to stay server-side (like tokens) I keep in event.locals which is available in all .server.js files