看别人代码看到

render() {return <Modal {...this.props}> {this.props.children} </Modal>
}

对其中的{...this.props}产生了疑惑。我们知道在JSX中遇到{}就以js来解析,所以遇到{...this.props}左边的 { 时,开始以js来解析。但我们在这里按照ES7的对象扩展运算符语法,无法解析
成对象,因为需要再多一个{}包住...this.props才行,否则会报错,更别提这里把父组件属性传给子组件使用了,根本就不符合ES7语法,那么是怎么运作的呢。

答案如下,这里不仅仅和ES7有关系还涉及到JSX语法了,

这个是JSX在实现中做的事情,一个传递的shortcut,它能够识别spread syntax到props中去

一个你就把它当作是jsx的语法来使用;一个如果你想知道为什么,读实现去

https://segmentfault.com/q/1010000005028077

转载于:https://www.cnblogs.com/zhansu/p/9016251.html

react中对象扩展运算符使用问题相关推荐

  1. ES6中的扩展运算符

    扩展运算符(...)将一个数组转化为参数序列,通常与函数一起使用,show(...['judy','girl']). 数组合并:[...arr1,...arr2,...arr3] 字符串转字符数组:[ ...

  2. es6之三个点(...) 扩展运算符数组和对象的使用场景及最常见的用法(霸霸看了都说好)

    概念 es6之扩展运算符 (-) 简称三个点 数组的扩展运算符应用 复制数组 扩展运算符提供了复制数组的简便写法. const a1 = [1, 2]; // 写法一 const a2 = [...a ...

  3. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

  4. es6之扩展运算符...

    对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 let bar = { a: 1, b: 2 }; let baz = { ...bar }; // { a: 1, ...

  5. 扩展运算符,Object.assign

    2019独角兽企业重金招聘Python工程师标准>>> assign或者...扩展符 都是浅拷贝 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 ...

  6. JavaScript扩展运算符(...)

    对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩展运算符将其属性x,y一并拷贝到b对象中. 合并两个 ...

  7. c语言扩展运算符是什么,扩展运算符(spread)是三个点(…)

    扩展运算符(spread)是三个点(-),将一个数组||类数组||字符串转为用逗号分隔的序列. js中用来对数组进行操作,把数组里面的东西统统拿出来 一.展开数组 //展开数组 let a = [1, ...

  8. ES9新特性_ES9扩展运算符与rest参数---JavaScript_ECMAScript_ES6-ES11新特性工作笔记053

    然后我们再去看看 es9中对,对象扩展运算符的增加. 可以看到说...这个rest参数与spread扩展运算符...,在es6中已经有了,但是es6,这个只是针对于数组的 es9可以针对对象提供了,类 ...

  9. ES6——扩展运算符/三点运算符(...)

    扩展运算符(spread)是三个点(...). 数组的扩展运算符 对于数组来说,它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) ...

  10. 【ES6】...扩展运算符

    文章目录 扩展运算符 一.在函数中使用 1.1 传递实参 1.2 接收形参 1.3 new 表达式 二.在数组中使用 2.1 合并数组 2.2 拷贝数组 三.在对象中使用 3.1 合并对象 3.2 拷 ...

最新文章

  1. monkey如何获取app包名
  2. 這麼多年興許從來沒有釋放過
  3. Keepalived简介
  4. idea(mac) 使用收集
  5. django 1.8 官方文档翻译: 6-6-4 部署静态文件
  6. parquet格式_【存储】基于列存之Parquet格式
  7. Java的switch是否支持String作为参数,还支持哪些类型?
  8. 有时我们经常碰到某目录下文件名乱码的情况,convmv可以批量转换文件名编码。...
  9. c语言 程序停止,Go语言宕机(panic)——程序终止运行
  10. IAR编译器问题的总结
  11. Qt自定义Combobox实现列表上拉展示
  12. 2022年第二十三届华东杯大学生数学建模竞赛
  13. 开关电源输入:共模电感,X电容,Y电容,差摸电感理论计算!
  14. 玩客云刷入Linux系统,搭建FTP服务器
  15. 项目部署三---linux下Nginx安装
  16. 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户
  17. html a标签触发不了onclick()事件
  18. Redis系列教材 (四)- Jedis 教程
  19. 2017第三届美亚杯全国电子数据取证大赛个人赛write up
  20. Qt使用第三方串口类qextserialport无法打开串口的可能解决方案(文章中描述的可以解决)

热门文章

  1. hikaripool信息_聊聊hikari连接池的fixed pool design
  2. 如何在linux中也能够使用自动类型推导关键字auto?
  3. 在Unity进行平台打包发布的时候需要注意的一些细节问题
  4. 对象关系映射文件详解
  5. Redis 6.0 源码阅读笔记(8) -- Stream 数据类型源码分析
  6. k8s学习笔记-Docker篇
  7. 4.3.2深度定时任务(TimerTask in Depth)
  8. 【渝粤教育】国家开放大学2018年秋季 1070t组织行为学 参考试题
  9. 【渝粤教育】广东开放大学 演绎娱乐经验管理 形成性考核 (49)
  10. 电影票房预测问题:如何使用Python生成词云