December 13, 2017
In react world, many time we call super
and super(props)
, I do that and saw in many places, however I’ve never asked myself what does it actually do…
eg.
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.onClickDiv = this.onClickDiv.bind(this);
}
onClickDiv() {
// do stuff
}
render() {
return <div onClick={this.onClickDiv} />;
}
}
So according to React source code
function ReactComponent(props, context) {
this.props = props;
this.context = context;
}
The only reason is to let you use this
or this.props
inside of the constructor, however you could always use props
from the constructor attribute…
There is only one reason when one needs to pass props to super():
Passing:
class MyComponent extends React.Component {
constructor(props) {
super(props)
console.log(this.props)
// goood
}
}
Not passing:
class MyComponent extends React.Component {
constructor(props) {
super()
console.log(this.props)
// -> undefined
// Props parameter is still available
console.log(props)
// good
}
render() {
// No difference outside constructor
console.log(this.props)
// good
}
}
Not calling:
class MyComponent extends React.Component {
constructor(props) {
console.log(this)
// undefined
}
}
Source: Stackoverflow