Я использовал React.createRef()
для вызова дочернего метода, вот так
import Child from 'child';
class Parent extends Component {
constructor(props) {
super(props);
this.child = React.createRef();
}
onClick = () => {
this.child.current.getAlert();
};
render() {
return (
<div>
<Child ref={this.child} />
<button onClick={this.onClick}>Click</button>
</div>
);
}
}
Такой детский класс
export default class Child extends Component {
getAlert() {
alert('getAlert from Child');
}
render() {
return <h1>Hello</h1>;
}
}
Это работает хорошо. Но когда я хочу использовать i18next для перевода дочернего компонента, мне нужно добавить withTranslation()
, чтобы использовать HOC.
import { useTranslation } from 'react-i18next';
class Child extends Component {
getAlert() {
alert('getAlert from Child');
}
render() {
const { t } = this.props;
return <h1>{t('Hello')}</h1>;
}
}
export default withTranslation()(Child);
Затем верните ошибку: функциональным компонентам нельзя дать ссылки.
Средство не может использовать ref в теге <Child />
. Есть ли способ вызвать дочернюю функцию после добавления i18next?