Vue组件传值及页面缓存问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue组件传值及页面缓存问题相关的知识,希望对你有一定的参考价值。

参考技术A 关于父组件的传值类型和props更多的定义详见官网 : vue官网
(2)子组件向父组件传值

(3)通过 chlidren等方法调取用层级关系的组件内的数据和方法。

有很多时候根据业务需求要在同级组件或页面间传值,此处提供以下几种方法作为参考:
(1)通过router-link进行跳转

(2) this.$router.push()
此方法同样是有path+query和name+params两种方式:

总结:使用query,传输的值会在url后面以参数的形式显示出来,可以刷新页面,数据不变,但会是页面路由过长;而params只要一刷新传递的参数就没了。
(3)LocalStorage缓存传值

注意:简单的小项目可以这么做,如果项目很大,建议直接用vuex。
(4)通过Vuex进行传值

(5)发布订阅模式(也叫eventBus或事件总线)
在Vue的原型上定义一个变量eventBus,所有所有Vue的实例或组件都将共享这个eventBus,可以用eventBus来发布自定义事件,然后在组件中用eventBus订阅自定义事件。就可以实现传值。

详细讲解可看 链接
(6)Vue.observable

index.vue组件中触发:

Vue中如何在切换组件过程中,将状态保存到内存中,防止DOM重新渲染,通俗的讲就是实现如何在一个页面输入部分数据后到了另一个页面再返回该页面,数据还在。
需求分析:Page1中录入信息,页面跳转带Page2,然后再返回Page1,之前Page1录入的信息还存在。

现在更改需求为:
首页是A页面
A页面跳转到B,B页面不需要缓存
B页面跳转到C,C页面不需要被缓存
C页面返回到B,B页面需要缓存
B页面返回到A,
A再次跳转到B

(1)此时思路是在每个路由的beforeRouteLeave(to, from, next)钩子中设置to.meta.keepAlive
beforeRouteLeave讲解

PageA页面:

PageB页面:

(2)用eventBus解决此问题
需要注意的一点是发布订阅第一次会无效,因为订阅的组件还没创建。解决方法就是首次进入pageB页面时接收pageA页面params里传递的参数。

以上是关于Vue组件传值及页面缓存问题的主要内容,如果未能解决你的问题,请参考以下文章

Vue组件传值及插槽

Vue组件传值及插槽

Vue组件传值及插槽

vue点击按钮打开组件并向组件传值

vue组件之间传值常用

VUe.js 父组件向子组件中传值及方法