首页 > 其他分享 >vue3 基础-组件间传值及校验

vue3 基础-组件间传值及校验

时间:2022-09-04 11:44:07浏览次数:71  
标签:app 校验 content vue3 组件 传值 属性

本篇讲基于对页面组件化拆分后, 组件之间如何进行数据传递, 通常是父组件如何给子组件进行传值, 子组件接收并进行数据校验后再使用.

父子组件传值

<!DOCTYPE html>
<html lang="en">

<head>
  <title>组件间传值</title>
  <script src="https://unpkg.com/vue@3"></script>
</head>

<body>
  <div id="root"></div>
  <script>
    const app = Vue.createApp({
      // 1. 父组件可通过 自定义属性 的方式给 子组件传递数据
      template: `
      <div>
        <Son content="father love you forever!" />
      </div>
      `
    })

    // 2. 子组件通过 props 属性进行接收值
    app.component('Son', {
      props: ['content'],
    // 3. 子组件成功取到父组件传过来的数据后, 即可在模板使用了
      template: `<div>{{content}}</div>`
    })

    const vm = app.mount('#root')

  </script>
</body>

</html>

就两个关键步骤:

  • 父组件可通过 自定义属性 的方式给 子组件传递数据
  • 子组件通过 props 属性接收数据

动态属性传值

即根据后端数据去让父组件的属性值能动态变化地将其传递给子组件 (v-bind).

<!DOCTYPE html>
<html lang="en">

<head>
  <title>动态属性传值 v-bind</title>
  <script src="https://unpkg.com/vue@3"></script>
</head>

<body>
  <div id="root"></div>
  <script>
    const app = Vue.createApp({
      // 通过数据去动态传值 v-bind
      data () {
        return { num: 666 }
      },
      template: `
      <div>
        <Son :content="num" />
      </div>
      `
    })

    // 2. 子组件通过 props 属性进行接收值
    app.component('Son', {
      props: ['content'],
    // 3. 子组件成功取到父组件传过来的数据后, 即可在模板使用了
      template: `<div>{{content}}--{{typeof content}}</div>`
    })

    const vm = app.mount('#root')

  </script>
</body>

</html>

注意这里的 content 属性要通过 v-bind:content="num", 简写为 :content:"num". 此时页面显示:

666--number

然而如果通过 content:"666" 的方式传递, 则页面会显示:

666--string

说明由 data ( ) 经过 v-bind 这样动态传值子组件能识别数据类型的. 而 直接写死传则是静态的字符 string 类型.

子组件数据校验

父子组件间能动态属性传值, 则相应地子组件能对传过来的数据做一个校验, 如果有问题就警告这样的.

<!DOCTYPE html>
<html lang="en">

<head>
  <title>子组件校验数据</title>
  <script src="https://unpkg.com/vue@3"></script>
</head>

<body>
  <div id="root"></div>
  <script>
    const app = Vue.createApp({
      data () {
        return { num: null }
      },
      template: `
      <div>
        <Son :content="num" />
      </div>
      `
    })

    // 子组件通过 props 属性进行接收值
    // 1. 类型校验: String, Number, Boolean, Array, Object, Function
    // 2. 必填校验: required: true
    // 3. 默认属性: default: functioin () { reutn 666 }
    // 4. 复杂校验: validator: function (value) { return value > 10 } 
    app.component('Son', {
      props: {
        content: {
          type: Number,
          required: true,
          // 默认可以是一个值, 函数啥的都行
          default: function () { return 666 },
          // 
        }
      },
    // 3. 子组件成功取到父组件传过来的数据后, 即可在模板使用了
      template: `<div>{{content}}--{{typeof content}}</div>`
    })

    const vm = app.mount('#root')

  </script>
</body>

</html>

小结

  • 父组件可通过 自定义属性 v-bind 的方式给 子组件传递数据
  • 子组件通过 props 属性接收数据, 并能进行各种校验
  • 类型校验: String, Number, Boolean, Array, Object, Function
  • 必填校验: required: true
  • 默认属性: default: functioin ( ) { return 666 }
  • 复杂校验: validator: function (value) { return value > 10 }

标签:app,校验,content,vue3,组件,传值,属性
From: https://www.cnblogs.com/chenjieyouge/p/16654742.html

相关文章

  • Element Plus 在 vue3 中使用
    特殊情况下,解决方案:1、el-tree实现收缩的关键字:expanded【组件内部处理的树形数据格式中的关键字】定义树形组件:<el-treeref="treeRef">...</el-tree>获取组件......
  • vue3项目-小兔鲜儿笔记-分类模块01
    1.二级类目-筛选区展示获取数据进行品牌和属性的渲染<template><divclass="sub-filter"v-if="filterData&&!filterDataLoading"><divclass="item"><......
  • vue3——初识setup
    1.理解:Vue3中一个新的配置项,值为一个函数。2.setup是所有CompositionAPI(组合API)表演的舞台3.组件中所用到的:数据、方法等等,均要配置在setup中。 4.setup函数的两种......
  • 统一校验
    此文代码托管地址:https://gitee.com/ZomiCC/code/tree/master/validate我们平时都会碰到很多通用校验的场景:比如字段非空校验、字段长度校验等等。如下所示:@Null:被注......
  • vue3和angular的区别和联系(前端主题随笔一)
    众所周知,vue脱胎于angular,平常在工作中,尤其对全栈开发者,甚至工业上需要管业务的开发者来说,一次掌握多种前端框架是没有时间和精力的事,博主是一个3年angular开发从业者,5年C#......
  • vue3 基础-全局组件和局部组件
    组件和页面的关系可以理解为,组件是页面的一部分.形象地理解组件就和盖房子一样的,可以将房子粗略拆分3个组件(组成部分)房顶,房身,地基.同时房顶又可以拆分...........
  • vue——创建vue3
    一.使用vue-cli创建官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create 二.使用vite创建官方文档:https://v3.cn.vuejs.org/guide/installa......
  • vue 父子组件传值
    一、父传子  1.父组件使用v-bind绑定一个变量variable(v-bind:变量名="值")<Invitationvisible="dialogVisible"@getData="getdata"/>   2. 子组件用prop......
  • .Net+Vue3实现数据简易导入功能
    在开发的过程中,上传文件或者导入数据是一件很常见的事情,导入数据可以有两种方式:前端上传文件到后台,后台读取文件内容,进行验证再进行存储前端读取数据,进行数据验证,然后发......
  • 校验文件类型是否在白名单内。
    classProgram{staticvoidMain(string[]args){using(varStream=newFileStream(@"C:\Users\qa_weiwa\Downloads\core6.0.ex......