博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react super理解
阅读量:4102 次
发布时间:2019-05-25

本文共 1162 字,大约阅读时间需要 3 分钟。

最近在看react的文档,发现react的逻辑都是以component为基础的。

比如:

class Clock extends React.Component {
constructor(props){
super(props); console.log(this); } }

在es6中class的继承是通过extends关键字实现的。constructor 是类默认的构造方法。那么super是做什么用的?

 

1.有super() or 无super()

我们现在注释掉super(props)

class Clock extends React.Component {
constructor(props){
//super(props); console.log(this); } }

提示图片

提示this不存在,就是说super是子类为了继承父类的this。
子类是没有自己的this的,它只能继承父类的this对象,然后对其操作。而super就是将父类的this继承给子类的。没有super,子类是无法拿到this对象的。

所以我们这样写 super()

class Clock extends React.Component {
constructor(props){
super(); console.log(this); } }

打印出this为:

结果
 

2.super(props) or super()

现在我们打印下 this.props

class Clock extends React.Component {
constructor(props){
super(props); console.log(this.props); } }

this.props

现在是可以正常打印出结果的,现在将super中的props删掉

class Clock extends React.Component {
constructor(props){
super(); console.log(this.props); } }

https://img-blog.csdnimg.cn/20190220163402157.png

也就是说,如果我们想在constructor中使用props,super中就必须要带参数。否则是无法拿到值的。

所以还是建议,不论constructor中是否用到props , 都这样写super(props); 这样不论什么情况都不会有拿不到值或者报错的情况

先写到这吧,要是有别的认知再来补充??~~~

转载地址:http://lizsi.baihongyu.com/

你可能感兴趣的文章
设计模式之策略模式
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
DES加解密
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>
用模板写单链表
查看>>
用模板写单链表
查看>>
链表各类操作详解
查看>>
C++实现 简单 单链表
查看>>
数据结构之单链表——C++模板类实现
查看>>
Linux的SOCKET编程 简单演示
查看>>
正则匹配函数
查看>>
Linux并发服务器编程之多线程并发服务器
查看>>
聊聊gcc参数中的-I, -L和-l
查看>>
[C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
查看>>