vue2和vue3中组件之间的传值

vue2:

        父传子:在vue2中父传子一般使用的都是props进行传递。子组件使用props接收父组件传递过来的值之后,就可以响应式的显示在页面上,这里注意props是只可读的,想要修改只能在父组件中进行修改。

        子传父:子组件想要传递数据向父组件,需要借助emits进行事件的传递,通过触发emit事件,然后父组件会接收事件,并接收数据,做出相关的反应。

vue3中:    

        在vue3中,使用组合式API进行组件之间的传值。需要注意的是,这里更vue2不同的是需要借助一些宏函数。

组合式API--父子通信:

        组件导入不需要注册,import导入之后就可以直接使用

        基本思想:父组件中给子组件绑定属性

                         子组件内部通过props选项接收

                        子组件接收数据:defineProps编译器宏函数

                            const props=defineProps({

                                message:String(数据类型)

                                            })

                            传递过来之后,就可以直接使用了{{message}}

    组合式API下的子传父:

        基本思想:

                父组件中给子组件标签通过@绑定事件

                子组件内部通过$emit方法触发事件

                通过defineEmits编译器宏生成emit方法

               const emit=defineEmits(['get-message'])

               触发自定义事件,并传递参数,根vue2相同

               下面在调用emit('get-message','this is son msg')

通过传递值,对响应式数据的传递,具有很好的效果,主要在使用的时候需要注意,在何时触发,在核实显示数据,数据从哪里来,顺清楚这里面的数据基本上就可以掌握了。

补充:

组合式API=provide和inject:

        作用和场景:

            顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信

        跨层传递普通数据:

            顶层组件通过provide函数提供数据

                provide('key',顶层组件中的数据)

                provide('key',响应式数据)

                provide('key',function)

                这里也可以直接传递一个方法,在底层组件也可以直接触发,可以修改响应式组件

            底层组件通过inject函数获取数据

                const message-inject('key')

                const fun=inject('key')//这里可以在底层触发之后fun方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 2和Vue 3组件传值的方式有一些差异。下面我将介绍Vue 2和Vue 3常用的几种组件传值方式: Vue 2组件传值方式: 1. Props:通过在父组件使用属性绑定的方式将数据传递给子组件。父组件通过在子组件标签上绑定属性,并在子组件通过props选项声明接收该属性。父组件可以在模板直接使用子组件的属性。 2. 自定义事件:父组件可以通过`$emit`方法触发自定义事件,并传递数据给子组件。子组件通过`$on`方法监听父组件触发的事件,并在事件处理函数接收数据。 3. Vuex:Vuex是Vue的状态管理库,可以在全局共享数据。父组件可以将数据存储在Vuex的状态管理,并在子组件通过计算属性或直接从Vuex获取数据。 Vue 3组件传值方式: 1. Props:与Vue 2相同,通过在父组件使用属性绑定的方式将数据传递给子组件。但是在Vue 3,子组件需要使用`defineProps`来声明接收属性。 2. 自定义事件:与Vue 2相同,父组件可以通过`$emit`方法触发自定义事件,并传递数据给子组件。子组件通过`$on`方法监听父组件触发的事件,并在事件处理函数接收数据。 3. Provide/Inject:父组件通过provide选项提供数据,然后子组件通过inject选项注入数据。这样可以在整个组件共享数据,而不需要显式传递。 需要注意的是,Vue 3还引入了Composition API,通过`setup`函数来组织组件的逻辑。在`setup`函数,可以使用`ref`和`reactive`等函数来创建响应式数据,并通过`props`参数接收父组件传递的属性。 以上是Vue 2和Vue 3常用的组件传值方式,根据具体需求和场景选择合适的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值