2024-02-24
4517
#vue
Ivaylo Gerchev
102924
Feb 24, 2024 ⋅ 16 min read

Leveraging Pinia to simplify complex Vue state management

Ivaylo Gerchev All things are difficult before they are easy.

Recent posts:

replay december 3

The Replay (12/3/25): React’s next era, AI code review tools, and more

React’s next era, AI code review tools, and more: discover what’s new in The Replay, LogRocket’s newsletter for dev and engineering leaders, in the December 3rd issue.

Matt MacCormack
Dec 3, 2025 ⋅ 30 sec read
quote card aurora scharff react async

The next era of React has arrived: Here’s what you need to know

Aurora Scharff discusses React’s async coordination primitives, and how React’s new era signals a fundamental shift in how devs build software.

Aurora Scharff
Dec 3, 2025 ⋅ 10 min read
tanstack db query driven sync

Tanstack DB 0.5 Query-Driven Sync: Loading data will never be the same

Explore TanStack DB’s new feature, Query-Driven Sync, and how you can leverage it to build efficient, scalable React applications.

David Omotayo
Dec 2, 2025 ⋅ 11 min read

Error boundaries are broken – signals can fix them

Error boundaries catch only render-time failures, which isn’t enough for modern async UIs. Signals treat errors as reactive state, giving you consistent handling across your app.

Isaac Okoro
Dec 1, 2025 ⋅ 6 min read
View all posts

18 Replies to "Leveraging Pinia to simplify complex Vue state management"

  1. I am really happy with your tutorial and about your patient to write details. It’s really helpful for us. Please write this type of article further.

  2. Thanks for the tutorial. This lines concern me – is it good practice to save the password unencrypted in the localStorage?

    user.authdata = window.btoa(username + ':' + password);

    ...

    // store user details and basic auth data in local storage to keep user logged in between page refreshes

    localStorage.setItem('user', JSON.stringify(user));

  3. I have problem with PostView.vue. fetchPost(to.params.id) is call only when i refresh page or first load, but when i click on any link with /post/:id never fire fetchPost(to.params.id) and get new post. When i change PostView.vue in script setup to:

    onBeforeRouteUpdate(async (to, from) => {
    if (to.params.id !== from.params.id) {
    fetchPost(to.params.id)
    }
    })

    Its OK. Where is problem?

    THX

  4. But the problem with this approach is that, imagine you want to access the posts state in multiple components, then you’d have to call the fetch function from pinia store in all these components (which is not DRY). We want a way to fetch the data directly from the store once it is created and before any component using it mounted or even created.

Leave a Reply

Would you be interested in joining LogRocket's developer community?

Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.

Sign up now