【Vue】了解何为 props ?该如何使用呢 ?

了解何为 props ?该如何使用呢 ?

props
官方文档

组件实例的作用域是孤立的。这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据。父组件的数据需要通过 prop 才能下发到子组件中

通过上面的解析,我们可以得出:props 是子组件访问父组件数据的唯一接口

详细分析即
  1. 一个组件可以直接在模板里面渲染 data 里面的数据(双大括号)
  2. 子组件不能直接在模板里面渲染父元素的数据
  3. 如果子组件想要引用父元素的数据,那么就在prop里面声明一个变量(比如a),这个变量就可以引用父元素的数据,然后在模板里渲染这个变量(前面的a),这时候渲染出来的就是父元素里面的数据
基本用法
<!--父组件-->
<template>
  <div>
      <hello-world2 :good = "good"></hello-world2> //向子组件传值
  </div>
</template>

<script>
  import helloWorld2 from "./HelloWorld2"  //引用子组件页面

  export default {
    name: "HelloWorld3",
    data() {
      return {
        good: "我是从hello word3传递过来的"
      }
    },
    components: {
      'hello-world2': helloWorld2   //注册子组件
    },
  }
</script>
<!--子组件-->
<template>
    <div>{{good}}</div>
</template>

<script>
  export default {
    props: ['good'], //通过props获取父组件传递过来的值
    data: function () {
      return {}
    },
    methods: {}
  }
</script>

**总结:**父组件通过 v-bind 向子组件传值,子组件通过 props 来获取父组件传递过来的值,被引用的就是子组件

camelCase vs. kebab-case:js中用驼峰式命名,在html中替换成短横线分隔式命名
<!--HTML 中使用 kebab-case -->
<child my-message="hello!"></child>
 
<script>
    Vue.component('child', {
        // 在 JavaScript 中使用 camelCase
        props: ['myMessage'],
        template: '<span>{{ myMessage }}</span>'
    })
</script>
单向数据流: props是单向绑定的
  • 父组件的属性变化时,将传导给子组件,但是反过来不会
  • 每次父组件更新时,子组件的所有 prop 都会更新为最新值

注意:不要在子组件内部改变 prop。如果你这么做了,Vue 会在控制台给出警告

在两种情况下,我们很容易忍不住想去修改 prop 中数据:

  1. prop 作为初始值传入后,子组件想把它当作局部数据来用
  2. prop 作为原始数据传入,由子组件处理成其它数据输出。

对这👆两种情况,正确的应对方式是👇

定义一个局部变量,并用 prop 的值初始化它:

 props: ['initialCounter'],
    data: function () {
      return { counter: this.initialCounter }
    }

定义一个计算属性,处理 prop 的值并返回:

props: ['size'],
    computed: {
      normalizedSize: function () {
        return this.size.trim().toLowerCase()
      }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值