class Example extends React.Component {
ref;
render() {
return <div ref={node => this.ref = node} />;
}
}
class Example extends React.Component {
ref;
createRef = node => this.ref = node;
render() {
return <div ref={this.createRef} />;
}
}
забудьте вообще костыли вроде: const self = this
Больше похоже на костыль то, что HTMLElement остается прежним, но на него все равно приходит пустой референс при перерендеривании
разумеется, но где другие пути, которые предоставляет React? Похоже, что их нету
что не надо передавать колбеком inline функцию
You can avoid this by defining the ref callback as a bound method on the class, but note that it shouldn’t matter in most cases.
React к данной проблеме вообще никакого отношения не имеет.
class Parent extends React.Component {
createRef = ({ node, data }) => { /* do something with node and data */ };
render() {
return <Child innerRef={this.createRef} />;
}
}
class Child extends React.Component {
createRef = node => {
this.props.innerRef({ node, data: 'data' });
};
render() {
return <div ref={this.createRef} />;
}
}
class Child extends React.Component {
createRef = (node, item) => {
this.props.innerRef({ node, item });
};
render() {
return items.map(item => <div ref={this.createRef} />);
}
}
class List extends React.Component {
createItemRef = ({ node, item }) => { /* do something with node and item */ };
render() {
const { items } = this.props;
return items.map(item => (
<Item key={item.id} innerRef={this.createItemRef} item={item} />
));
}
}
class Item extends React.Component {
createRef = node => {
const { innerRef, item } = this.props;
innerRef({ node, item });
};
render() {
const { item } = this.props;
return <div ref={this.createRef}>{item.title}</div>;
}
}