【Vue2.x】props技术详解

1.什么是prop?

  • 定义:组件标签上注册的一些自定义属性
  • 作用:向子组件传递数据
  • 特点
  1. 可以传递任意数量的prop
  2. 可以传递任意类型的prop

2.prop校验

为了避免乱传数据,需要进行校验

完整写法 

将之前props数组的写法,改为对象的写法

值得注意的是这个非空校验,指的是万一忘记传值(忘了在标签中写自定义属性)

仅类型校验(最常用)


prop & data的异同点

共同点:都可以给组件提供数据

区别:

  • data的数据是自己的 ->   想咋改咋改
  • prop的数据是外部的 ->   不能直接改,要遵循 单向数据流

案例:加减器

数据count是父组件的,子组件的加减按钮的功能不能直接count++ count--了,需要子传父的写法

  • App.vue 
<template>
  <div class="app">
    <BaseCount :Count="count" @CountAdd="CountAdd" @CountSub="CountSub"></BaseCount>
  </div>
</template>

<script>
import BaseCount from "./components/BaseCount.vue"
export default {
  components: {
    BaseCount,
  },
  data() {
    return {
      count: 999,
    }
  },
  methods: {
    CountAdd(newCount){
      this.count = newCount;
    },
    CountSub(newCount){
      this.count = newCount;
    },
  }
}
</script>

<style>

</style>
  • BaseCount.vue
<template>
  <div class="base-count">
    <button @click="requestSub">-</button>
    <span>{{ Count }}</span>
    <button @click="requestAdd">+</button>
  </div>
</template>

<script>
export default {
    props: {
        Count: Number,
    },
    methods: {
        requestSub() {
            this.$emit('CountSub',this.Count - 1);
        },
        requestAdd() {
            this.$emit('CountAdd',this.Count + 1);
        }
    }
}
</script>

<style>

</style>
单向数据流

由上面案例可以得出,父组件的prop数据的更新,会单向向下流动,影响到子组件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值