首页 > web前端 > Vue.js > Vue中父组件向子组件传递数据的方法

Vue中父组件向子组件传递数据的方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2022-08-10 14:09:25
转载
2413 人浏览过

本篇文章给大家带来了关于vue的相关知识,其中主要总结了几种vue中父子组件传递数据的方法,包括了props & event、ref属性、provide & inject等等内容,具有一定的参考价值,下面一起来看一下,希望对大家有帮助。

Vue中父组件向子组件传递数据的方法

【相关推荐:javascript视频教程vue.js教程

最近在学习vue的源码,总结了几种vue中父子组件传递数据的方法。

1.props & event

父组件向子组件传递props数据,子组件通过触发事件向父组件回传数据,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

//子组件

<template>

    <div @click="changeName(&#39;YYY&#39;)">{{name}}</div>

</template>

<script>

export default{

    props:[&#39;name&#39;],//or props:{name:{type:String,default:&#39;&#39;}}

    methods:{

        //不能在子组件修改props数据,应触发事件让父组件处理

        changeName(newName){

            this.$emit(&#39;changeName&#39;,newName)

        }

    }

}

</script>

  

//父组件

<template>

    <div>

        <child-comp :name="name" @changeName="changeName"></child-comp>

    </div>

</template>

<script>

    import childComp from &#39;path&#39;

    export default{

        data(){

            return {name:&#39;XXX&#39;}

        },

        components:{

            childComp

        },

        methods:{

            changeName(newName){

                this.name = newName;

            }

        }

    }

</scritp>

登录后复制

以上就是一个完整的流程,父组件通过props将数据传递给子组件,子组件则触发事件,由父组件监听,并做相应处理。

2.ref

ref属性可定义在子组件或原生DOM上,如果在子组件上,则指向子组件实例,如果在原生DOM上,则指向原生DOM元素(可以用做元素选择,省去querySelector的烦恼)。

传递数据的思路:在父组件内通过ref获取子组件实例,然后调用子组件方法,并传递相关数据作为参数。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

//子组件

<template>

    <div>{{parentMsg}}</div>

</template>

<script>

export default{

    data(){

        return {

            parentMsg:&#39;&#39;

        }

    },

    methods:{

        getMsg(msg){

            this.parentMsg = msg;

        }

    }

}

</script>

  

//父组件

<template>

    <div>

        <child-comp ref="child"></child-comp>

        <button @click="sendMsg">SEND MESSAGE</button>

    </div>

</template>

<script>

    import childComp from &#39;path&#39;

    export default{

        components:{

            childComp

        },

        methods:{

            sendMsg(){

                this.$refs.child.getMsg(&#39;Parent Message&#39;);

            }

        }

    }

</scritp>

登录后复制

3.provide & inject 官方不推荐在生产环境使用

provide意为提供,当一个组件通过provide提供了一个数据,那么它的子孙组件就可以使用inject接受注入,从而可以使用祖先组件传递过来的数据。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//child

<template>

    <div>{{appName}}</div>

</template>

<script>

export default{

    inject:[&#39;appName&#39;]

}

</script>

  

// root

export default{

    data(){

        return {

            appName:&#39;Test&#39;

        }

    },

    provide:[&#39;appName&#39;]

}

登录后复制

【相关推荐:javascript视频教程vue.js教程

以上是Vue中父组件向子组件传递数据的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
vue
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
javascript - Vue 未定义
来自于 1970-01-01 08:00:00
0
0
0
javascript - 如何在vue-router中访问VUE实例?
来自于 1970-01-01 08:00:00
0
0
0
javascript - vue-for-idea
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板