Vue props父组件向子组件传值详解

vue官网上可以说有我们想要的一切,先贴上通过prop传值的官网地址通过prop向子组件传递数据

 

Prop是什么?

  Prop是你可以在组件上注册的一些自定义特性。当一个值传递给一个prop特性的时候,它就变成了那个组件实例的一个属性

  从这句话上面我们能看出两点

  1、prop是写在组件上的。

  2、把父组件的一个值传给子组件时,这个值通过prop转化成了这个子组件实例的一个属性。

  

  不理解第二句话没关系,看下面例子。

 

基础--静态传值

  1、首先创建一个Vue实例

  2、注册一个组件(这样注册组件的方式是全局注册),还记得我们第一句话吗?prop是在组件上的。因为可以是多个,所以是props。

    在props上声明的是title,在我们的template模板中使用的都是它。

  3、使用组件。

<script>
        //第二步: 注册一个全局组件
        Vue.component('props-component', {
            // 在这个组件上声明props
            props:['title'],
            template:`
                <div>{{title}}</div>
            `
        });
        // 第一步:声明Vue
        let vm = new Vue({
           el:'#app' 
        });
    </script>
<div id="app">
        <!-- 第三步:使用组件 -->
        <props-component title="props so easy"></props-component>
    </div>

 

  这只是一个非常简单的静态传值,可在实际中我们几乎不用静态传值。

 

进阶--动态传值

  我刚学习vue的时候,一直不知道props的流程到底是怎么样的,也就是我是先创建组件,还是先声明一个vue实例等等。流程很重要,

  也可以说这种思想很重要。

  说下我的理解:

  1、首先我们应当知道自己创建的组件里面是什么标签啊之类的。我应用到哪个地方?具体模板应该是什么样子的?

    就像我们上面例子中的这个最简单的模板。

<div>{{title}}</div>

  2、声明组件上的props。

  3、实例上的data值应当和props声明的值对应。

 

  看下面的例子:

  场景:我想写一个页面的header标签组件。

  

 第一步:

// 第一步:声明Vue
        let vm = new Vue({
           el:'#app',
           data:{
                
           }
        });

第二步:这个组件应当长什么样子?

        // 第二步:创建组件
        Vue.component('my-header', {
            props:['lists'],
            template:`
                <header>
                    <ul>
                        <li>{{lists}}</li>
                    </ul>
                </header>
            `
        })

第三步:声明headerList(其实熟练的话,这步骤完全省略了)

let vm = new Vue({
           el:'#app',
           data:{
                headerList:'首页'
           }
        });

第四步:使用组件 :lists="headerList"

    lists是我们在组件中props声明的,headerList是我们在根实例中声明的属性

<my-header :lists="headerList"></my-header>

 

这样就是一个最简单的组件传值了。

 

打完收工

 

转载于:https://www.cnblogs.com/chinabin1993/p/9105131.html

Vue3中,父组件子组件有多种方法。其中一种方法是使用`defineProps`,在父组件中定义props属性,然后将需要递给子组件作为props的属性。在子组件中,可以使用`props`接收父组件递的。 具体实现步骤如下: 1. 在父组件中使用`defineProps`定义props属性,并将需要递给子组件作为props的属性。 2. 在子组件中使用`props`接收父组件递的。 下面是一个示例代码,展示了如何在Vue3中实现父向子组件: ```javascript // 父组件 Father.vue <template> <div class="fa"> <div style="margin: 10px;">我是父组件</div> 父组件接收子组件:{{ sonMessage }} <Son :message="sonMessage"></Son> </div> </template> <script setup lang="ts"> import Son from './Son.vue' import { ref } from "vue"; const sonMessage = ref<string>(""); </script> <style scoped> .fa { border: 3px solid cornflowerblue; width: 400px; text-align: center; } </style> ``` ```javascript // 子组件 Son.vue <template> <div class="son"> <div style="margin: 10px;">我是子组件</div> 子组件接收父组件:{{ message }} </div> </template> <script setup lang="ts"> import { defineProps } from "vue"; const props = defineProps({ message: String, // 定义props属性,接收父组件递的 }); </script> <style scoped> .son { border: 3px solid lightgreen; width: 200px; text-align: center; } </style> ``` 在父组件中,使用`:message="sonMessage"`将`sonMessage`的递给子组件的`message` props属性。在子组件中,使用`props`接收父组件递的,并在模板中展示。 这样,就实现了在Vue3中父组件子组件的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vue3父子组件参通信](https://blog.youkuaiyun.com/qq_45397526/article/details/126281133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue3 父组件子组件如何 详解](https://blog.youkuaiyun.com/qq_56263094/article/details/124576055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值