vue父组件向子组件传递数据

vue父组件怎么向子组件传递数据呢?不知道的小伙伴来看看小编今天的分享吧!

vue父组件向子组件传递数据的方法有四种:props和event、ref、provide和inject、vuex。

1、props和event

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

//子组件

<template>

<div @click="changeName('YYY')">{{name}}</div>

</template>

<script>

export default{

props:['name'],//or props:{name:{type:String,default:''}}

methods:{

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

changeName(newName){

this.$emit('changeName',newName)

}

}

}

</script>

//父组件

<template>

<div>

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

</div>

</template>

<script>

import childComp from 'path'

export default{

data(){

return {name:'XXX'}

},

components:{

childComp

},

methods:{

changeName(newName){

this.name = newName;

}

}

}

</scritp>

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

2、ref

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

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

//子组件

<template>

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

</template>

<script>

export default{

data(){

return {

parentMsg:''

}

},

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 'path'

export default{

components:{

childComp

},

methods:{

sendMsg(){

this.$refs.child.getMsg('Parent Message');

}

}

}

</scritp>

3、provide和inject

官方不推荐在生产环境使用

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

//child

<template>

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

</template>

<script>

export default{

inject:['appName']

}

</script>

// root

export default{

data(){

return {

appName:'Test'

}

},

provide:['appName']

}

4、vuex

vue官方推荐的全局状态管理插件。

以上就是小编今天的分享了,希望可以帮助到大家。

标签:vue父组件 传递数据 子组件

免责声明:本内容来自橡树街平台创作者或收集于互联网公开资源,不代表橡树街网的观点和立场。如有侵权内容,请联系我们删除。联系邮箱:ihuangque@qq.com
相关推荐
vue父组件向子组件传递数据
2022-08-05
vue父组件向子组件传递数据
手机老是弹出广告怎么解决
2022-08-05
手机老是弹出广告怎么解决
小爱同学怎么判断我喜欢的人喜不喜欢我
2022-08-05
小爱同学怎么判断我喜欢的人喜不喜欢我
安卓手机如何打开.kmz文件
2022-08-05
安卓手机如何打开.kmz文件
苹果手机文件管理在哪里
2022-08-05
苹果手机文件管理在哪里
安卓手机如何打开.sav文件
2022-08-05
安卓手机如何打开.sav文件
义渠国是现在的哪里
2022-07-27
义渠国是现在的哪里
防火等级分几个级别
2022-07-27
防火等级分几个级别
糖脂是什么
2022-07-27
糖脂是什么
买了学生票可以改为成人票吗
2022-07-27
买了学生票可以改为成人票吗
不锈钢生锈严重怎样除锈
2022-07-27
不锈钢生锈严重怎样除锈
什么是实体店
2022-07-27
什么是实体店
冬天海水结冰是可能还是不可能
2022-07-27
冬天海水结冰是可能还是不可能
可颂是什么做的
2022-07-27
可颂是什么做的
庄河巴黎春田属于哪个街道
2022-07-27
庄河巴黎春田属于哪个街道
冰墩墩金边是什么
2022-07-27
冰墩墩金边是什么