关于vuex-router-sync的作用,或者可以解决什么问题
我为什么要转载这篇文章呢?原因其实很简单,也是让人失望。事情的经过是这样的,我在别人的代码里看vuex-router-sync,我当时就在想为什么要用这个东西,这个东西可以解决什么问题,可以带来什么好处,在什么样的场景下需要用它,用它是不是会比其他方案更加方便。然后我首先还是选用了百度进行搜索,翻了3页,都没有找到一篇像样的问题,真正去说这个东西的作用,都是人云亦云,搜索了半天,终于看到了上面的链接,stackoverflow大家都知道的,是个英文网站,我的英文不好,但是没有办法了我只能上去看看,然后就发现人家就是解决了我的疑惑。我就想到底是写中文文字的程序员技术不行还是都懒得去写。不管怎么样,我还是想站在中文的角度吧这个问题回答一下,方便后续有其他人搜索的时候可以更加快速的找到问题的答案。
简书上一篇文字是这样描述的:
-----开始-----
vuex-router-sync 插件通过动态注册模块将 vue-router 和 vuex 结合在一起,实现应用的路由状态管理。
使用如下
import { sync } from 'vuex-router-sync'
import store from './vuex/store' // vuex store instance
import router from './router' // vue-router instance
const unsync = sync(store, router) // done. Returns an unsync callback fn
-----结束-----
思否上有一个回答是这样的
-----开始-----
文章图片
-----结束-----
我看到这些个回答,我真的很懵逼,还是不知道这个vuex-router-sync可以解决什么问题
我来来看看stackoverflow是怎么描述的(我直接翻译,蹩脚的英文,大家见谅)
如下:
**但当您尝试在Vuex的方法中使用Route对象时,您可能需要它(在Vuex的领域中,$route不会很好地工作)
然后回答者举了一个例子:假设您想在一个组件中显示一条消息,希望在几乎每一个页面上都显示“Have a nice day, Jack”,除了首页,因为首页要显示"Welcome back, Jack".
借助vuex-router-sync,您可以轻松实现**
const Top = {
template: '{{message}}',
computed: {
message() {
return this.$store.getters.getMessage;
}
},
};
const Bar = {
template: '{{message}}',
computed: {
message() {
return this.$store.getters.getMessage;
}
}
};
const routes = [{
path: '/top',
component: Top,
name: 'top'
},
{
path: '/bar',
component: Bar,
name: 'bar'
},
];
const router = new VueRouter({
routes
});
const store = new Vuex.Store({
state: {
username: 'Jack',
phrases: ['Welcome back', 'Have a nice day'],
},
getters: {
getMessage(state) {
return state.route.name === 'top' ?
`${state.phrases[0]}, ${state.username}` :
`${state.phrases[1]}, ${state.username}`;
},
},
});
// sync store and router by using `vuex-router-sync`
sync(store, router);
const app = new Vue({
router,
store,
}).$mount('#app');
【关于vuex-router-sync的作用,或者可以解决什么问题】如您所见,组件与Vuex和Vue-router的逻辑完全分离。这种模式有时确实适用于您不关心当前路由和Vuex getter返回值之间关系的情况。
到此,我不知道看到文章的你是否能够明白,如果不用vuex-router-sync,你会怎么实现,会遇到什么困难?
推荐阅读
- 树上dp|树的最小支配集和最小点覆盖
- 牛客网高频算法题系列-BM18-二维数组中的查找
- 投稿|被“标准”困住的新手妈妈
- Chrome浏览器内置Google翻译失败的解决方案
- 实时云渲染的关键技术是什么()
- leetcode 145. Binary Tree Postorder Traversal 二叉树的后序遍历 (中等)
- 手把手教你PolarDB-X中的表设计——用户表
- 【无人机】【2016】【含源码】无人机实时分层三维路径规划算法的开发
- 投稿|拿捏年轻人的“小龙虾杯面”,难逃一阵风的宿命?
- 投稿|国庆观察:5000元一晚的民宿,一房难求