[Vue] 15.Vue中的组件:组件传值及传值校验

news/2024/7/10 2:56:18 标签: 前端, javascript, vue

一、父组件传值给子组件

  1. 父组件通过属性将值传给子组件,子组件通过props接收传过来的值:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>15</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
    <script>
        const app = Vue.createApp({
            template: `<div><test content="hello world"/></div>`
        });
        app.component('test', {
            props: ['content'],
            template: `<div>{{content}}</div>`
        })
        const vm = app.mount('#root')
    </script> 
</body>
</html>

在这里插入图片描述
2. 父组件若要传递number类型的数据给子组件,可传动态参数,即传一个变量

<script>
        const app = Vue.createApp({
            data() {
                return {num: 123}
            },
            template: `<div><test :content="num"/></div>`
        });
        app.component('test', {
            props: ['content'],
            template: `<div>{{typeof content}}</div>`
        })
        const vm = app.mount('#root')
    </script>

二、子组件校验父组件传过来的数据

  1. 若子组件想接收字符串,此时验证父组件传过来的值是不是字符串
    通过props: { content: String },
    来定义想要接收的值的类型,如果不是指定类型,控制台中会有提示
    在这里插入图片描述
<script>
        const app = Vue.createApp({
            data() {
                return {num: 123}
            },
            template: `<div><test :content="num"/></div>`
        });
        app.component('test', {
            props: {
                content: String
            },
            template: `<div>{{typeof content}}</div>`
        })
        const vm = app.mount('#root')
    </script> 
  1. 若要要求必须让父组件传值过来,同时还可定义默认值,可按如下写:
<script>
        const app = Vue.createApp({
            data() {
                return {num: 123}
            },
            template: `<div><test :content="num"/></div>`
        });
        app.component('test', {
            props: {
                content: {
                    type:Number,
                    required: true,
                    default: 789
                }
            },
            template: `<div>{{typeof content}}</div>`
        })
        const vm = app.mount('#root')
    </script>
  1. 规定子组件接收什么样的数据:validator (若不符合,则在控制台中会有log)
<script>
        const app = Vue.createApp({
            data() {
                return {num: 123}
            },
            template: `<div><test :content="num"/></div>`
        });
        app.component('test', {
            props: {
                content: {
                    type:Number,
                    validator: function(value) {
                        return value < 1000
                    },
                    required: true,
                    default: 789
                }
            },
            template: `<div>{{typeof content}}</div>`
        })
        const vm = app.mount('#root')
    </script>

在这里插入图片描述


http://www.niftyadmin.cn/n/1440466.html

相关文章

RESTful api 功能测试

0 为什么要写测试代码 代码写好了&#xff0c;如果能点或者能看&#xff0c;开发人员一般会自己点点或看看&#xff0c;如果没有发现问题就提交测试&#xff1b;更进一步&#xff0c;代码写好后&#xff0c;运行测试代码&#xff0c;通过后提交测试。将流程抽象下&#xff1a; …

动态网站设计十八般武艺——ASP篇(一)(转)

看了《如何令你的网站“动感十足”》一文后&#xff0c;是否令你怦然心动&#xff1f;是否已经急不可待地想构建属于你自己的动态网站&#xff1f;本文将以Active Server Pages为中心&#xff0c;向你全面展示制作动态商业网站的步骤和技巧并通过大量的实例&#xff0c;让你在不…

[Vue] 16.Vue中的组件:组件传值及单向数据流的理解

一、父组件向子组件传递多个参数&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

java读取配置文件*.property

2019独角兽企业重金招聘Python工程师标准>>> package mmboa.util;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties;/*** 读取properties文件* …

ASP问答集(转)

问&#xff1a;为什么我的记录集的RecordCount值总是返回-1&#xff1f; 答&#xff1a;你应当使用这种模式来打开存取数据库的记录集&#xff1a; rec.open strSQL,conn,1,1 其中的strSQL是操作数据库的SQL语句;conn是联接数据库的Connection 变量。 问&#xff1a;我在ASP脚本…

等价关系与抽象代数的研究对象

1. 抽象代数 说起来比较抽象。 当然了&#xff0c;作为工科生&#xff0c;咱们的特长就是用比较实在的东西去帮助理解。 首先&#xff0c;抽象代数研究的对象主要 就是集合&#xff0c; 并且这个集合定义了一些运算&#xff08;加减乘除啊之类的&#xff09;。 2. 接着说说关系…

Angular设置代理

为什么要配置代理&#xff1a;解决前后端的跨域问题&#xff0c;即前后端服务的协议/域名/端口不一致就会出现跨域现象。 如&#xff1a;本地的后台服务端口是3002&#xff0c;前台请求端口是4230前台配置单一代理 1&#xff09; 在项目根目录下新建一个proxy.conf.json文件 {…

简单实用至上——影片压制全攻略(转)

影片压制全攻略第一步: 安装软件1. 安装 暴风影音 5.11RC1, 此软件安装目的: 播放压制后的RMVB成品, 整合VOBSUB与FFDSHOW![ 相关贴图 ]430)this.width430" align"center" border"0" />注意: 安装时除了 YAHOO!助手 不选择以外, 其余的组件需全部安…