File tree 2 files changed +48
-0
lines changed
2 files changed +48
-0
lines changed Original file line number Diff line number Diff line change 1
1
# vuex-router-sync [ ![ CircleCI] ( https://circleci.com/gh/vuejs/vuex-router-sync.svg?style=svg )] ( https://circleci.com/gh/vuejs/vuex-router-sync )
2
2
3
+
4
+ [ 中文版本 (Chinese Version)] ( /vuejs/vuex-router-sync/blob/master/README.zh-cn.md )
5
+
3
6
> Sync vue-router's current $route as part of vuex store's state.
4
7
5
8
## Usage
Original file line number Diff line number Diff line change
1
+ ## vuex-router-sync
2
+
3
+ > 把 vue-router 当前的 ` $route ` 同步为 vuex 状态的一部分。
4
+
5
+ ### 用法
6
+
7
+ ```
8
+ # 最新版本需要配合 vue-router 2.0 及以上的版本使用
9
+ npm install vuex-router-sync
10
+ # 用于版本低于 2.0 的 vue-router
11
+ npm install vuex-router-sync@2
12
+ ```
13
+
14
+ ``` javascript
15
+ import { sync } from ' vuex-router-sync'
16
+ import store from ' ./vuex/store' // vuex store 实例
17
+ import router from ' ./router' // vue-router 实例
18
+
19
+ const unsync = sync (store, router) // 返回值是 unsync 回调方法
20
+
21
+ // 在这里写你的代码
22
+
23
+ // 在 Vue 应用销毁时 (比如在仅部分场景使用 Vue 的应用中跳出该场景且希望销毁 Vue 的组件/资源时)
24
+ unsync () // 取消 store 和 router 中间的同步
25
+ ```
26
+
27
+ 你可以有选择地设定一个自定义的 vuex 模块名:
28
+
29
+ ``` javascript
30
+ sync (store, router, { moduleName: ' RouteModule' } )
31
+ ```
32
+
33
+ ### 工作原理
34
+
35
+ - 该库在 store 上增加了一个名为 ` route ` 的模块,用于表示当前路由的状态。
36
+
37
+ ``` javascript
38
+ store .state .route .path // current path (字符串类型)
39
+ store .state .route .params // current params (对象类型)
40
+ store .state .route .query // current query (对象类型)
41
+ ```
42
+
43
+ - 当被导航到一个新路由时,store 的状态会被更新。
44
+
45
+ - ** ` store.state.route ` 是不可变更的,因为该值取自 URL,是真实的来源** 。你不应该通过修改该值去触发浏览器的导航行为。取而代之的是调用 ` $router.push() ` 或者 ` $router.go() ` 。另外,你可以通过 ` $router.push({ query: {...}}) ` 来更新当前路径的查询字符串。
You can’t perform that action at this time.
0 commit comments