Basically, I have used constructor
in React
for only 3 reasons -
state
like -class App extends React.Component {
constructor(props) {
super(props);
this.state = { counter: 0 };
}
}
but due to Babel's class-field support, I don't use it anymore
class App extends React.Component {
state = { counter: 0 };
}
bind
functions like -class App extends React.Component {
constructor(props) {
super(props);
this.increment.bind(this);
}
increment() {
}
}
but due to arrow
functions, I don't do it anymore
class App extends React.Component {
increment = () => {
}
}
createRef
like -class App extends React.Component {
constructor(props) {
super(props);
this.inputRef = React.createRef();
}
}
So can I use React.createRef
without using constructor
in React?
You can declare it as an class field just like state
.
class App extends React.Component {
state = { counter: 0 };
inputRef = React.createRef();
}
Babel will transpile it into something like the code below in stage-2 presets.
constructor(props) {
super(props);
this.state = { counter: 0 };
this.inputRef = React.createRef();
}