zvvq技术分享网

Vue|组件之间传递值的几种方法

作者:zvvq博客网
导读Emit是Vue中另一种传递值的方式。updateName(event){在上面的例子中,我们在子组件中使用了$emit方法,并将update-name作为事件名称,name作为事件参数。Provide/Inject是Vue中另一种传递值的方式。

在Vue中,组件之间传递值是非常常见的需求。在本文中,我们将介绍几种组件之间传递值的方法。

zvvq好,好zvvq

. Props 内容来自samhan

Props是Vue中最基本的传递值方式。通过在父组件中使用props属性来向子组件传递值。在子组件中,我们可以使用this.$props来获取这些值。 内容来自samhan666

例如,我们有一个父组件和一个子组件,我们想要向子组件传递一个名字: 内容来自zvvq,别采集哟

```html 内容来自zvvq,别采集哟

<!-- 父组件 --> copyright zvvq

<template> 内容来自zvvq

<div>

zvvq好,好zvvq

<child-component :name="name"></child-component>

内容来自samhan666

</div>

内容来自zvvq

</template>

zvvq.cn

<script>

zvvq

import ChildComponent from &;./ChildComponent.vue&;;

copyright zvvq

export default {

copyright zvvq

components: { zvvq

ChildComponent, 内容来自samhan

},

zvvq

data() { 本文来自zvvq

return { 内容来自samhan666

name: &;Tom&;,

内容来自samhan

}

copyright zvvq

}, 内容来自samhan

}

内容来自samhan

</script>

内容来自zvvq

<!-- 子组件 --> 内容来自zvvq

<template>

内容来自zvvq

<div>{{ name }}</div>

内容来自samhan

</template> copyright zvvq

<script>

zvvq好,好zvvq

export default { 本文来自zvvq

props: {

zvvq好,好zvvq

name: String,

内容来自zvvq,别采集哟

},

内容来自samhan

} 内容来自zvvq,别采集哟

</script>

zvvq.cn

```

内容来自zvvq,别采集哟

在上面的例子中,我们在父组件中使用了props属性,并将name作为属性传递给了子组件。在子组件中,我们使用了props选项来声明这个属性。然后我们就可以在子组件中使用这个属性了。

zvvq

. Emit

zvvq

Emit是Vue中另一种传递值的方式。通过在子组件中使用$emit方法来向父组件传递值。在父组件中,我们可以使用v-on来监听这些事件。 内容来自samhan666

例如,我们有一个父组件和一个子组件,我们想要向父组件传递一个名字:

内容来自samhan

```html

内容来自samhan

<!-- 父组件 -->

copyright zvvq

<template>

内容来自zvvq,别采集哟

<div> 内容来自zvvq,别采集哟

<child-component @update-name="updateName"></child-component> 本文来自zvvq

<p>名字:{{ name }}</p> 本文来自zvvq

</div> copyright zvvq

</template> 内容来自samhan

<script>

内容来自samhan

import ChildComponent from &;./ChildComponent.vue&;;

内容来自samhan666

export default {

本文来自zvvq

components: {

内容来自samhan666

ChildComponent,

zvvq.cn

}, zvvq好,好zvvq

data() { 内容来自zvvq,别采集哟

return {

内容来自samhan666

name: &;&;,

内容来自samhan666

} 内容来自zvvq,别采集哟

},

本文来自zvvq

methods: {

内容来自samhan666

updateName(name) {

zvvq.cn

this.name = name;

内容来自samhan666

} 内容来自samhan

}

内容来自zvvq,别采集哟

}

内容来自samhan666

</script> zvvq

<!-- 子组件 --> 内容来自samhan666

<template>

内容来自zvvq

<div>

zvvq好,好zvvq

<input v-model="name" @input="updateName">

zvvq

<button @click="emitUpdateName">更新名字</button> 内容来自zvvq,别采集哟

</div> copyright zvvq

</template>

本文来自zvvq

<script> zvvq.cn

export default { 内容来自samhan666

data() { 本文来自zvvq

return { zvvq.cn

name: &;&;, zvvq

} 内容来自samhan

},

zvvq

methods: { zvvq好,好zvvq

updateName(event) {

内容来自zvvq

this.name = event.target.value;

内容来自samhan666

}, zvvq.cn

emitUpdateName() {

zvvq好,好zvvq

this.$emit(&;update-name&;, this.name);

zvvq好,好zvvq

} zvvq.cn

},

zvvq

} 内容来自zvvq,别采集哟

</script> 内容来自samhan

``` 内容来自samhan666

在上面的例子中,我们在子组件中使用了$emit方法,并将update-name作为事件名称,name作为事件参数。在父组件中,我们使用v-on来监听update-name事件,并将updateName方法作为回调函数。当子组件中的按钮被点击时,就会触发$emit方法,并将name作为参数传递给父组件。

内容来自samhan666

. Provide / Inject

zvvq

Provide / Inject是Vue中另一种传递值的方式。通过在父组件中使用provide方法来向子组件提供值,在子组件中使用inject选项来注入这些值。 内容来自zvvq,别采集哟

例如,我们有一个父组件和一个孙子组件,我们想要向孙子组件传递一个名字: 内容来自samhan666

```html zvvq

<!-- 父组件 -->

zvvq.cn

<template> 内容来自samhan

<div>

zvvq好,好zvvq

<child-component></child-component>

本文来自zvvq

</div>

内容来自samhan

</template> 内容来自samhan

<script> 内容来自samhan666

import ChildComponent from &;./ChildComponent.vue&;; 内容来自zvvq,别采集哟

export default {

内容来自zvvq

components: { copyright zvvq

ChildComponent,

copyright zvvq

},

本文来自zvvq

provide() {

copyright zvvq

return {

内容来自samhan

name: &;Tom&;, 内容来自samhan666

} zvvq好,好zvvq

},

内容来自zvvq

}

内容来自samhan666

</script>

zvvq.cn

<!-- 子组件 --> 内容来自samhan

<template> 内容来自samhan

<div> zvvq

<grandchild-component></grandchild-component> zvvq好,好zvvq

</div> zvvq好,好zvvq

</template>

内容来自zvvq,别采集哟

<script>

zvvq好,好zvvq

import GrandchildComponent from &;./GrandchildComponent.vue&;;

copyright zvvq

export default {

内容来自zvvq

components: { 内容来自samhan

GrandchildComponent, 本文来自zvvq

},

zvvq好,好zvvq

} 本文来自zvvq

</script>

内容来自samhan

<!-- 孙子组件 --> 内容来自samhan

<template>

zvvq好,好zvvq

<div>{{ name }}</div> 内容来自samhan666

</template> zvvq

<script>

zvvq

export default { 内容来自samhan

inject: [&;name&;],

内容来自samhan666

}

内容来自samhan

</script> zvvq好,好zvvq

```

内容来自zvvq,别采集哟

在上面的例子中,我们在父组件中使用了provide方法,并将name作为值提供给了孙子组件。在孙子组件中,我们使用了inject选项,并将name作为依赖项注入进来。然后我们就可以在孙子组件中使用这个值了。 zvvq

内容来自samhan666

以上是几种常见的Vue组件之间传递值的方法。每种方法都有其优缺点,具体使用时需要根据实际情况进行选择。希望本文能够对您有所帮助。

内容来自zvvq,别采集哟