vue中,父子组件传递参数 props 实现方式

通过 Prop 向子组件传递数据

001:父组件=====》子组件通信

<template>
    <div>
       <h1>这里是父元素</h1>
       //******
       <childComponent :detailMes="detailMes"/>
    </div>
</template>

<script>
    import childComponent from  './childComponent'
    export default {
        name:"parentComponent",
        data() {
            return {
                detailMes:'111'
            }
        },
        components: {
            childComponent,
        },
    }
</script>

子组件

<template>
  <div>
    数据需要从父元素传递过来哦:{{detailMes}}
  </div>
</template>

<script>
  export default {
    name:'childComponent',
    data() {
      return {
      }
    },
    props:['detailMes'],
    methods: {
      name() {
        
      }
    }
  }

002:子组件=====》父组件通信
(要求父组件先给子组件一个函数)
列表数据在父组件,循环的ul>li在子组件,现在在组件删除数据,需要通知父组件

<template>
    <div>
       <h1>这里是父</h1>
       //父组件先给子组件一个函数
       <childComponent :list="list" :del="del"/>
    </div>
</template>

<script>
    import childComponent from  './childComponent'
    export default {
        data() {
            return {
                list:[
                    {id:"001",stuName:'学生a'},
                    {id:"002",stuName:'学生b'},
                ]
            }
        },
        components: {
            childComponent,
        },
        methods: {
            del(id) {
                const idx=this.list.findIndex(v=>v.id==id);
                if(idx>-1){
                    this.list.splice(idx,1)
                }
                // this.list=this.list.filter(item=>item.id!==id)
            }
        },
    }
</script>
<template>
  <div>
    子组件
    <ul>
      <li v-for="item of list" :key="item.id">
        <span>{{item.stuName}}</span>
        <button @click="dele(item.id)" class="red">x</button>
      </li>
    </ul>
  </div>
</template>

<script>
  export default {
    name:'childComponent',
    data() {
      return {
      }
    },
    props: {
      // 父元素传递过来的方法
      list:{},
      // 父组件传递过来的方法
      del:{}
    },
    methods: {
      dele(ids) {
        // 通知父元素,快删除数据了
        // 去调用父组件的方法
        this.del(ids);
      }
    }
  }

003 传递 多层传递下去

<template>
    <div>
       <h1>这里是父</h1>
       <childComponent :msg="msg"/>
    </div>
</template>

<script>
    import childComponent from  './childComponent'
    export default {
        data() {
            return {
                msg:'这条数据需要通过层层传递下去'
            }
        },
        components: {
            childComponent,
        },
    }
</script>
<template>
  <div>
    子组件
    <grandsonComponent :msg="msg"></grandsonComponent>
  </div>
</template>

<script>
import grandsonComponent from '@/components/grandsonComponent.vue';
  export default {
    components: {
      grandsonComponent,
    },
    props: {
      msg:{}
    },
  }
</script>
<template>
    <div>
       这是统计的{{msg}}的数据
    </div>
</template>

<script>
    export default {
        name:'grandsonComponent',
        props: {
            msg: {}
        },
        //props:['msg']
    }
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue父子组件之间传递信息可以通过props和$emit事件来实现。 1. 父组件向子组件传递信息: 在父组件通过props将数据传递给子组件,子组件通过props接收数据即可。 父组件: ``` <template> <div> <child-component :message="message"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, data() { return { message: 'Hello, child component!' } } } </script> ``` 子组件: ``` <template> <div> {{ message }} </div> </template> <script> export default { props: { message: String } } </script> ``` 2. 子组件向父组件传递信息: 在子组件通过$emit事件触发父组件的方法,将需要传递的数据作为参数传递即可。 子组件: ``` <template> <div> <button @click="sendMessage">Send message to parent</button> </div> </template> <script> export default { methods: { sendMessage() { this.$emit('send-message', 'Hello, parent component!') } } } </script> ``` 父组件: ``` <template> <div> <child-component @send-message="receiveMessage"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, methods: { receiveMessage(message) { console.log(message) } } } </script> ``` 在子组件通过$emit触发了send-message事件,父组件通过@send-message监听到事件,并且将传递的数据作为参数传递给了receiveMessage方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值