React中用函数定义组件时,参数为props和形如{name,title}的区别

在学习React的过程中,用函数定义组件时,碰到了下面这种情况。函数组件的参数不为props,而是{aaa,bbb}这样的形式,并且这个定义的方式是正确的。这令我费解,它和props本身有什么关系吗?这种定义方式和常规定义有什么不同吗?
在这里插入图片描述

根据我的理解,正常定义函数组件时,形式应如下图所示:
在这里插入图片描述

翻阅React文档后,只找到下面这句话和问题有些相关:

函数组件接收唯一带有数据的 “props”(代表属性)对象,并返回一个 React 元素

根据前半句话,我的猜测是这样的:

因为函数组件只能接收一个参数props,且props为对象,而{name,title}刚好是一个对象,故必然和props有联系。所以我猜测,props 事实上就是 {name,title} ,props的结构很可能是这样的

props = {
	name: "xxx",
	title: "yyy"
}

而且{props.name}的效果等价于直接使用{name},也能佐证这一点。

一番思索之后,我越发觉得我的想法是正确的。正欣喜若狂之际,突然灵机一动,我为什么不能直接console.log(props)看一看呢?

结果发现:
在这里插入图片描述
没毛病,今天又是傻虎虎的一天。

——————————————————————

原理解释

emmm,不好意思,耽误大家时间了。在我后来的学习中,我意识到了这只是ES6的语法,特来更新一波。
事实上,这里运用了ES6的对象解构赋值方法。简单举个例子

let { name,title } = {aaa:"aaa", name:"Sara", title:"world", bbb:"bbb", ... }

此时,左边的name和title会被正确赋值为"Sara"和"world"。

props其实就是一个有很多属性的对象。在function Book 的声明过程中,参数设置为了一个对象{ name, title },这是形参,而外部传递过来的props是一个实参。在调用函数的过程中,实参会赋值给形参,即{ name, title } = props。那么,name和title就被正确赋值了。

这么写的作用

  1. 在声明函数的过程中,函数的参数有哪些变得清晰可见。把参数写成prop或者写成{ name, title }这样的形式,明显右边更明了
  2. 在函数体内调用参数的时候也更方便。如果参数为props,要这样调用:props.name;而写成{ name, title }形式的话,直接调用name即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值