Create Ref Using React.createRef Without Using Constructor In React?
Solution 1:
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();
}
Solution 2:
Yes, you can. For example:
const MyComponent = () => {
const inputRef = React.createRef();
return (
<input ref={inputRef} />
);
}
The only thing you cannot do, is pass the ref
attribute to a functional component:
render() {
// This won't work.
return <MyFunctionalComponent ref={this.inputRef} />
}
More info from the official docs, here:
You can, however, use the
ref
attribute inside a function component as long as you refer to a DOM element or a class component:
Solution 3:
you can create a ref with ref callbacks without using constructor. <input ref={(element) => { this.inputRef = element; }} />
is what you need.
Solution 4:
On class components write like below:
import React, { Component, createRef } from 'react';
class App extends Component {
inputRef = createRef();
render() {
return (
<div ref={this.inputRef}~~~
);
}
}
On functional components write like below:
import React, { useRef } from 'react';
const App = () => {
const inputRef = useRef(null);
return (
<div ref={inputRef}~~~
);
};
Definitely, the referenced element is mutable object but it should persist for the full lifetime of the component. it is not my opinion, this words are for ReactJS docs.
Solution 5:
Yes. Exactly as you did with the state (with Babel's class-field support):
class App extends React.Component {
inputRef = React.createRef();
}
Post a Comment for "Create Ref Using React.createRef Without Using Constructor In React?"