props这种方式接收,如果想要一层一层的传递,这种方式就会比较麻烦,不灵活
provide与inject就是解决:怎么从祖组件的数据,传递到孙组件,实现跨级组件传递数据的
在vue3.0里面,同样提供了...就可以了的,那怎么样把这个数据传递到子孙组件,那么就需要用到inject了的
02
inject()函数
定义: 注入一个由祖先(父)组件或整个应用提供的值
实现: 接收父(祖)组件传递过来的值
inject...它也可以是一个函数,用来返回某些创建起来比较复杂的值,如果默认值本身就是一个函数
那么必须将false作为第三个参数传入,表明这个函数就是默认值,而不是一个工厂函数
与注册生命周期钩子的API类似,inject...,则会丢失响应式,修改数据时,页面不会更新,具体解决,可以引入toRef或toRefs函数
const {name,website} = toRefs(person);
在孙组件中的模板即可以读取,从父组件传递过来的数据也是支持响应式的...,而在面试当中也是一个高频面试问题,怎么解决跨级组件,非父子组件通信