爷孙组件传递数据

对于父子组件的传递数据,可以通过prop进行传递,但是如果是爷爷向孙子传递数据呢?我们需要在爸爸中定义defineProps拿到爷爷传来的数据,然后在孙子中也定义defineProps,爸爸把刚刚拿到的数据在传递给孙子。

对于爸爸来说根本用不到这些数据,只是孙子要用到。那有没有一种方法让爷爷直接传递数据给孙子呢?答案肯定是有的,这里说的是依赖注入的方法,还有一种使用vuex的方法以后再说吧。

传递数据

provide()函数有两个参数,第一个参数是注入名,第二个参数是传递的数据。通过这个函数可以把爷爷中的数据传递给孙子。

inject()函数,这个函数也有两个参数,第一个参数就是provide()函数的第一个参数,第二个参数为可选,表示爷爷没有传递数据过来时的默认值。这个函数用在孙子组件中,用于接收数据。

爷爷


父亲


孙子


结果如下,可以看到在爷爷中provide把msg传递给孙子,然后孙子使用inject函数接收,把msg渲染到页面上。

数据更新的方法

孙子拿到数据后可以直接在自己的组件内更改这个数据,但是并不建议这样做。我们可以在爷爷传递数据的同时把更改数据的方法也传递过去。先在爷爷中定义一个更改函数,然后把这个函数也传递过去。

爷爷


父亲


孙子


爷爷把数据和改变方法一起传了过去,孙子解构出数据和方法,当点击按钮时就触发这个改变方法从而改变数据。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部