vue3父子组件传值中props使用细节浅析

下面开始详细讲解“vue3父子组件传值中props使用细节浅析”的完整攻略。

1. 父组件向子组件传值

1.1 父组件使用props向子组件传值

Vue3中,使用props向子组件传值与Vue2相同。在父组件中定义数据,然后在子组件中通过props接收即可。

// 父组件
<template>
  <child :msg="message"></child>
</template>

<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      message: 'Hello World!'
    }
  },
  components: {
    Child
  }
}
</script>

// 子组件
<template>
  <div>{{msg}}</div>
</template>

<script>
export default {
  props: {
    msg: String
  }
}
</script>

在上面的代码中,父组件通过:msg="message"向子组件传递数据,子组件通过props接收数据。

1.2 Props验证

在Vue3中,我们可以通过Props验证来对传递的数据进行验证。

// 子组件
<template>
  <div>{{msg}}</div>
</template>

<script>
export default {
  props: {
    msg: {
      type: String,
      required: true,
      validator: function (value) {
        return value.length > 3;
      }
    }
  },
}
</script>

通过在props中定义type,required和validator等属性,我们可以对数据进行验证。在上述代码中,msg必须是字符串类型,并且必须传递,同时校验函数validator返回值必须为真。

2. 子组件向父组件传值

2.1 使用事件向父组件传递数据

在Vue3中,子组件向父组件传值依然采用了事件派发的方式。使用$emit方法来触发事件,父组件在使用子组件时加上事件监听即可。

// 子组件
<template>
  <button @click="add">Add count</button>
</template>

<script>
export default {
  methods: {
    add() {
      this.$emit('addcount', 1);
    }
  }
}
</script>

// 父组件
<template>
  <child @addcount="handleAdd"></child>
</template>

<script>
import Child from './Child.vue';
export default {
  methods: {
    handleAdd(val) {
      console.log(val);
    }
  },
  components: {
    Child
  }
}
</script>

在上述代码中,当子组件按钮被点击后,会触发add方法,并使用$emit方法派发出一个名为addcount的事件,同时将1作为参数传递给父组件。父组件在使用子组件时,通过@addcount监听这个事件,并在handleAdd方法中处理传递过来的数据。

2.2 使用v-model向父组件传递数据

在Vue3中,我们也可以使用v-model来实现子组件向父组件传值。和Vue2中相同,我们可以通过在子组件中使用model选项和$emit方法来指定v-model绑定的数据和事件。

// 子组件
<template>
  <input type="text" :value="value" @input="$emit('update:value', $event.target.value)">
</template>

<script>
export default {
  model: {
    prop: 'value',
    event: 'update:value'
  },
  props: {
    value: String
  }
}
</script>

// 父组件
<template>
  <child v-model="name"></child>
</template>

<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      name: ''
    }
  },
  components: {
    Child
  }
}
</script>

在上述代码中,子组件中使用model选项指定了v-model绑定的数据是value,事件是update:value。然后在input标签中,我们使用:value="value"来将父组件传入的数据绑定到输入框中,当输入框内容发生改变时,会使用$emit('update:value', $event.target.value)方法将最新的数据传递给父组件。在父组件中,我们在子组件上使用v-model双向绑定,将子组件中的value和父组件中的name进行关联。

至此,“vue3父子组件传值中props使用细节浅析”的攻略完结。希望能帮助到您的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3父子组件传值中props使用细节浅析 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Javascript结合Vue实现对任意迷宫图片的自动寻路

    下面是”Javascript结合Vue实现对任意迷宫图片的自动寻路”的完整攻略: 1. 如何实现对任意迷宫图片的自动寻路 1.1 准备工作:模板结构 首先,我们需要准备好一个模板结构,用于容纳我们的代码逻辑、样式和UI交互。该模板结构包括以下几个文件和文件夹: index.html:主页面文件 script.js:主要的JavaScript代码文件 styl…

    Vue 2023年5月28日
    00
  • js如何操作localstorage

    操作LocalStorage是通过Javascript提供的API来进行的。LocalStorage提供了一些非常有用的方法,可以帮助我们完成一些复杂的任务。下面我来详细讲解一下如何通过JS操作Localstorage。 什么是LocalStorage? LocalStorage是HTML5标准提供的一种本地存储机制,提供了类似cookie的API,但是比C…

    Vue 2023年5月28日
    00
  • Vue核心概念Action的总结

    下面是Vue核心概念Action的总结的完整攻略。 什么是Action Action是Vuex服务于mutations的触发器,用于处理异步请求和复杂的逻辑。 Action的语法 在Vuex中,定义一个Action的语法如下: actions: { actionName (context, payload) { // 逻辑处理 } } 其中,actions是…

    Vue 2023年5月27日
    00
  • vue学习之Vue-Router用法实例分析

    Vue-Router 是 Vue.js 官方的路由插件,它和 Vue.js 具有相同的核心思想,即都是将 UI 和行为抽象成组件的形式,且都支持通过 props 向子组件传递数据。 Vue-Router 可以让我们通过 URL 和组件的映射关系来实现页面的跳转和切换,同时还支持路由的嵌套、命名视图、多种路由参数传递方式等功能,非常强大和灵活。 下面我们来分析…

    Vue 2023年5月27日
    00
  • Vue混入与插件的使用介绍

    下面将对Vue混入与插件的使用进行详细讲解。 什么是Vue混入? Vue混入是一种分发Vue组件中可复用功能的非常灵活的方式。混入(mixin)对象可以包含任意组件选项。当组件使用混入对象时,混入对象中的选项会被“混入”到组件自身的选项中。换句话说,混入就是将一些组件中相同的部分提取出来,然后在多个组件中共用。 混入的应用场景很广泛,例如:多个组件都需要注入…

    Vue 2023年5月28日
    00
  • Vue watch中监听值的变化,判断后修改值方式

    当需要在Vue组件中监听某个特定数据的变化时,就需要用到Vue的watch功能。下面,我将为您详细讲解“Vue watch中监听值的变化,判断后修改值方式”的完整攻略。 监听数据变化 使用Vue的watch功能时,我们可以在组件中使用$watch来监听特定数据的变化,并在数据变化时执行相应的逻辑操作。 下面是一个示例,我们监听一个数据值dataValue的变…

    Vue 2023年5月27日
    00
  • vue.js中created方法作用

    Vue.js 中的 created() 方法是 Vue 实例生命周期钩子函数之一,用于在 Vue 实例创建并构建完毕后被触发执行。接下来,我将详细介绍 created() 方法的作用和用法。 created() 方法的作用 在 Vue.js 应用中使用 created() 方法通常有以下一些作用: 初始化一些数据,包括组件中的变量,是最常用的 created…

    Vue 2023年5月27日
    00
  • Vue 通过公共字段,拼接两个对象数组的实例

    要完成“Vue 通过公共字段,拼接两个对象数组”的操作,可以使用Vue中的计算属性来实现。 在Vue实例的data中定义两个对象数组: data: { arr1: [ { id: 1, name: ‘A’, age: 20 }, { id: 2, name: ‘B’, age: 22 }, { id: 3, name: ‘C’, age: 18 }, ], …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部