一、用中转站的方式
这种方式意思就是让每次操作完成以后,都让路由跳转到这个中转站页面,然后这个页面获取到进来路由的路径再返回去就可以了,这种方式可以作为解决方法之一,普遍用的还是第二种。
二、provide / inject 的方式
这种方式,就是让通过 provide 让 App.vue 为所有子孙页面注入一个 reload 的方法,然后在需要使用的页面,通过 inject 注入即可,代码如下:
今天重点讲第二个:
父子组件传参可以通过props
和emit
来实现,但是当组件的层次结构比较深时,props
和emit
就没什么作用了。vue为了解决这个提出了Provide / Inject
通用知识
基本用法
provide 选项应该是:一个对象或返回一个对象的函数
inject 选项应该是:一个字符串数组,或 一个对象,对象的 [key] 是本地的绑定名
provide 和 inject 绑定并不是可响应的。这是刻意为之的。
代码执行顺序
data->provide->created->mounted
这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。
如果你熟悉 React,这与 React 的上下文特性很相似。
provide 选项应该是一个对象或返回一个对