Vue中props用法和传值问题

props的基本用法是父组件给子组件传输数据和验证

基本用法:
1.在父组件中的data中定义值
2.在子组件中使用props声明要引用哪个值
3.父组件的template中要在子组件标签上绑定
4.在template模板中,要使用中划线写法;在script脚本中使用小驼峰
在这里插入图片描述

props的使用:

1.静态props
静态即传入的值不变化,直接在父组件中定义,子组件中使用

2.动态props
动态即传入的值会变化,父组件中要动态地绑定父组件的数据。

3.props验证
验证传入的props参数的数据规格,如果不符合数据规格则发出警告,注意这个数据类型包含所有的数据类型,如基本类型和引用类型;
还可以在验证中加入自定义验证函数,当返回false时则发出警告

3.单向数据流: props是单向绑定的

一般来说,当父组件的属性变化时,将传导给子组件,但是反过来不会。每次父组件更新时,子组件的所有 prop 都会更新为最新值。

但是,这只是限于静态或者动态时子组件中没有定义局部变量去接收的情况,如果说子组件中定义了局部变量去接收,那么父组件中的值更新时子组件是接收不到的,即子组件只能接收初始值(不管是在data中定义还是computed计算属性定义)

在这里插入图片描述

在这里插入图片描述

第二点,但是基本数据类型时,子组件接收了父组件中的数据再进行修改,父组件中的数据是不受影响的,也就是props的单向数据流;但是如果是对象数组这种引用类型数据的话,子组件中修改,父组件也会跟着变化的(当然,父组件中修改子组件也会变化),原因就是它们共用一个内存地址,相当于浅拷贝!

解决方案:在子组件中对数据进行局部变量接收后再进行深拷贝!!然后用拷贝完后的数据!

看下面,一变全变

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结一下props传值的注意点:

1.若是子组件定义局部变量去接收,则不接受父组件数据更新,即只能接收初始值

2.基本数据类型修改,子组件不会影响父组件,但是若是引用数据类型数组对象的话,两者相互影响,共用同一个内存地址,相当于浅拷贝

  • 25
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue,组件之间的数据传递主要通过props和emit实现,其props用于父组件向子组件传递数据,emit用于子组件向父组件传递数据。 props的作用是将父组件的数据传递给子组件,子组件通过props接收父组件传递过来的数据,从而完成数据的共享。使用props时,需要在子组件定义props属性,props属性可以是一个数组,数组的每个元素都是一个字符串,代表该组件需要从父组件接收的数据的属性名。例如: ```javascript // 父组件 <template> <child-component :msg="message"></child-component> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { 'child-component': ChildComponent }, data () { return { message: 'Hello, World!' } } } </script> // 子组件 <template> <div>{{ msg }}</div> </template> <script> export default { props: ['msg'] } </script> ``` 在上面的例子,父组件定义了一个数据message,然后通过在子组件使用props来接收这个数据。 除了使用数组的方式来定义props,还可以使用对象的方式来定义props,这种方式可以指定props的类型、默认值、是否必须等。例如: ```javascript props: { title: { type: String, required: true }, count: { type: Number, default: 0 } } ``` 在上面的例子,title属性是必须的,类型是字符串;count属性的类型是数字,有默认值0。 使用props时需要注意以下几点: 1. 子组件props属性不能直接修改,如果需要修改需要通过$emit方法向父组件发送一个事件。 2. 父组件向子组件传递的数据是单向的,即父组件的数据改变不会影响子组件,只有在子组件使用$emit方法向父组件发送一个事件时,父组件的数据才会改变。 3. props属性的值是响应式的,如果父组件的数据改变了,通过props接收到的子组件数据也会随之改变。 总之,propsVue组件之间数据传递的重要方式,掌握好props的使用方法可以让我们更好地开发Vue应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值