Vue23-props配置功能

news/2024/7/10 1:08:20 标签: 前端, javascript, vue, 前端框架

Vue2&3-props配置功能

Vue2-props配置

  • 功能:接收从其他组件传过来的数据,将数据从静态转为动态
  • 注意:
    • 同一层组件不能使用props,必须是父组件传子组件的形式。父组件传数据,子组件接收数据。
    • 不能什么数据都接收,可能会出现一些奇怪的bug
    • props接收过来的数据不要修改,页面渲染可能没有问题,但控制台会报错,而且不符合规范

在这里插入图片描述

props的三种接收方法:

  • 第一种:数组形式(常用)
javascript">props:['a', 'b']
  • 第二种:类型限制
javascript">props : { 
    a : String 
    b : Number 
}
  • 第三种:类型限制,必要性限制,默认值
javascript">props : { 
    a : {
        // type:类型(可以是数字,字符串等)
        type : Number, 
        // required:true 或者 false
        // 设置为true视为a必须存在(必填项),没有a则控制台报错
        // 默认情况为false 
        required : true 
    }, 
    b : { 
        type : Number, 
        // default:默认值
        // 在添加默认值之前该字段接收的数据已经有数值时,则默认值无效
        default : 10 
    }
}

传数据的形式(传数据的形式可对应任意一种接受数据的方法):

  • 在标签内传数据
javascript">// 父组件
<Info name="张三" :age="12"></Info>

// 子组件
props : ['name', 'age']
  • 在data(){}中传数据
javascript">// 父组件
<Info :list="list"></Info>
data() {
    return {
        list : [
            {id:'001', name:'zhangsan', age:'10'},
            {id:'002', name:'lisi', age:'20'}
        ]
    }
}

// 子组件
props : ['list']
  • 在methods : {}中传数据
javascript">// 父组件
<Info :list="list"></Info>
method : {
    list(){
        ......
    }
}

// 子组件
props : ['list']
  • 注:传数据的形式有很多,不局限以上用法,也可以在computed : {}中传数据等

怎么用?

  • 父组件传数据,子组件接收数据
javascript">// App.vue
<template>
    <div>
        <h1>{{msg}}</h1>
        // 当出现第二 或 第三种带有限定类型的props时,要注意接受的数据是否符合类型限制
        // 不符合类型限制,但又不想修改类型,例如:age="12",可采用v-bind:
        // v-bind:简写形式 => ':',等号后面可以是常量或字符串等
        <Info name="张三" :age="12"></Info>
    </div>
</template>

<script>
    import Info from './components/Info.vue'
    export default {
        name : 'App',
        data() {
            return {
                msg : '个人信息'
            }
        },
        components : {Info}
    }
</script>
javascript">// Info.vue
<template>
    <div>
        <h3>姓名:{{name}}</h3>
        <h3>年龄:{{age}}</h3>
    </div>
</template>

<script>
export default {
    name : 'Info',
    data() {
        return {
            name: this.name
        }
    },
    // 数组形式(常用)
    props : ['name','age']
    
    // 带有类型限定
    props : { 
        name : String 
        age : Number 
    }
    
    // 类型限制,必要性限制,默认值
    props : { 
        name : {
            type : Number, 
            required : true 
        },
        age : { 
            type : Number, 
            default : 10 
        }
    }
}
</script>

Vue3-props配置

props的配置在Vue2和Vue3上基本相同,这里主要说明如何用setup调用props的接受数据
  • setup如何调用props?
    • 在setup函数中是没有this关键字的,所以在代用setup函数之前,会先给setup传递一个参数(props)
    • props参数在setup中被包装成一个代理对象,同样具有响应式处理能力
javascript">// App.vue
<template>
    <User name="jack" :age="age"></User>
</template>

<script>
    import { ref } from 'vue'
    import Info from './components/Info.vue'
    export default {
        name : 'App',
        components : {Info},
        setup(){
            let age = ref(20)
            return{age}
        }
    }
</script>
javascript">// Info.vue
<template>
    <h2>姓名:{{name}}</h2>
    <h2>年龄:{{age}}</h2>
</template>

<script>
    export default {
        name : 'Info',
        // Vue3的props依旧是Vue2的接收方式,没变
        props : [name, age],
        // setup参数名可以随意,没要求
        setup(props){
            console.log(props.name);
            console.log(props.age);
        }
    }
</script>

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

相关文章

Kafka JNDI 注入分析(CVE-2023-25194)

Apache Kafka Clients Jndi Injection 漏洞描述 Apache Kafka 是一个分布式数据流处理平台&#xff0c;可以实时发布、订阅、存储和处理数据流。Kafka Connect 是一种用于在 kafka 和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于 SASL JAAS 配置和 SAS…

jQuery中显示与隐藏

在我们jQuery当中&#xff0c;有多个显示隐藏的方法&#xff0c;本篇介绍一下hide()、show()、toggle() 在我们JS当中&#xff0c;或是CSS当中&#xff0c;我们常用到display:none或block; 在我们jQuery当中&#xff0c;我们该如何实现显示隐藏 在我们jQuery当中&#xff0c;我…

AcWing99. 激光炸弹

题目 地图上有 N N N 个目标&#xff0c;用整数 X i , Y i X_i,Y_i Xi​,Yi​ 表示目标在地图上的位置&#xff0c;每个目标都有一个价值 W i W_i Wi​。 注意&#xff1a;不同目标可能在同一位置。 现在有一种新型的激光炸弹&#xff0c;可以摧毁一个包含 R R RR RR 个…

如何用Java高效地存入一万条数据?这可能是你面试成功的关键!

大家好&#xff0c;我是你们的小米&#xff0c;一个热爱技术、喜欢分享的29岁程序猿。今天我要和大家聊一聊一个常见的面试题&#xff1a;在Java中&#xff0c;当我们需要将一万条数据存储到数据库时&#xff0c;如何能够提高存储效率呢&#xff1f; 在面试过程中&#xff0c;…

Yolov8模型训练报错:torch.cuda.OutOfMemoryError

最近在使用自己的数据训练Yolov8模型的时候遇到了很多错误&#xff0c;下面将逐一解答。 问题报错 在训练过程中红字报错&#xff1a;torch.cuda.OutOfMemoryError: CUDA out of memory. 后面还会跟着一大段报错&#xff1a; Tried to allocate XXX MiB (GPU 0; XXX GiB to…

以技术创新引领行业发展,飞凌嵌入式获双项省级荣誉

近日&#xff0c;飞凌嵌入式荣获「2023年河北省专精特新示范企业」以及「第五批省级制造业单项冠军企业」两项殊荣。这两项荣誉的获得&#xff0c;是对飞凌嵌入式在专业技术领域与创新能力的高度认可&#xff0c;荣誉的背后&#xff0c;凝聚着飞凌嵌入式无数次的研发探索与对创…

Python练手算法

Python练手算法 实例02实例03实例04实例05实例06实例07实例08实例09实例10实例11实例12实例13实例14实例15实例16实例17实例18实例19实例20实例21实例22实例23实例24实例25实例26实例27实例28实例29实例30实例31实例32实例33实例34实例35实例36实例37实例38实例39实例40实例41…

you-get - 使用代码下载视频

文章目录 关于 you-get代码调用报错处理 源码简单分析 关于 you-get github : https://github.com/soimort/you-get you-get 是一个有名的开源视频下载工具包&#xff0c;这里不赘述。 代码调用 you-get 提供了命令行的方式下载视频&#xff0c;这里介绍使用 Python 调用源代…