GitXplorerGitXplorer
v

vuex-router-sync

public
2516 stars
125 forks
11 issues

Commits

List of commits on branch master.
Unverified
f3bf651d037d559458c8c32d1da8f79859d46f47

chore: update release script

kkiaking committed 4 years ago
Unverified
56cb732c6978477ce5e9c8a42871a3b5415ad1bb

chore: clean changelog

kkiaking committed 4 years ago
Unverified
8c164462a6ce602211148cb1db07c8bd0955b5b4

revert: circle ci removal

kkiaking committed 4 years ago
Unverified
3d26c68e208ffcf71e2c152089aedd09ae7bd4df

ci: remove circle ci integration

kkiaking committed 4 years ago
Unverified
48b24b6d302b57d428f4a9a30e811313a24612c0

chore: add badges to README

kkiaking committed 4 years ago
Unverified
ba1ee77987086e5d5839d97ceb272004713d4bbb

ci: rename workflow name to test

kkiaking committed 4 years ago

README

The README file for this repository.

Vuex Router Sync

npm ci status coverage license

Sync Vue Router's current $route as part of Vuex store's state.

中文版本 (Chinese Version)

Usage

# the latest version works only with vue-router >= 2.0
npm install vuex-router-sync

# for usage with vue-router < 2.0:
npm install vuex-router-sync@2
import { sync } from 'vuex-router-sync'
import store from './store' // vuex store instance
import router from './router' // vue-router instance

const unsync = sync(store, router) // done. Returns an unsync callback fn

// bootstrap your app...

// During app/Vue teardown (e.g., you only use Vue.js in a portion of your app
// and you navigate away from that portion and want to release/destroy
// Vue components/resources)
unsync() // Unsyncs store from router

You can optionally set a custom vuex module name:

sync(store, router, { moduleName: 'RouteModule' } )

How does it work?

  • It adds a route module into the store, which contains the state representing the current route:

    store.state.route.path   // current path (string)
    store.state.route.params // current params (object)
    store.state.route.query  // current query (object)
  • When the router navigates to a new route, the store's state is updated.

  • store.state.route is immutable, because it is derived state from the URL, which is the source of truth. You should not attempt to trigger navigations by mutating the route object. Instead, just call $router.push() or $router.go(). Note that you can do $router.push({ query: {...}}) to update the query string on the current path.

License

MIT