this
внутри класса LoadingHOC
относится к экземпляру класса.
Рассмотрим следующее:
import React from 'react';
const LoadingHOC = (WrappedComponent) => {
return class LoadingHOC extends React.Component{
render() {
return this.props.userName === "" ? "Loading..." : <WrappedComponent {...this.props} />
}
}
}
const DummyComponent = (props) => (<div>{props.username}</div>);
const EnhancedComponent = LoadingHOC(DummyComponent);
LoadingHOC(DummyComponent)
вызывает LoadingHOC
функцию , которую вы объявили, и возвращает вам LoadingHOC
класс , который вы описываете внутри функции. Итак, делаем что-то вроде:
<EnhancedComponent username="john"/>
В результате будет создан экземпляр класса LoadingHOC
с пропеллой username
, который будет передан аргументу WrappedComponent
, в нашем случае DummyComponent
.
Надеюсь, это достаточно ясно для вас.