Следуя этому примеру https://code.likeagirl.io/how-to-create-a-connected-hoc-with-react-and-redux-8631f7b1497 Я написал метод с React / Redux, который создает HO C, принимающий в качестве аргументов метод (fetchData) для получения данных из моего бэкэнда и имени Redux хранить. В основном все работает нормально, но я не уверен, что код стабилен, так как PyCharm выдает предупреждение для многих переменных, используя «this» («потенциально недопустимое использование this»). Я сократил код всего своего компонента, чтобы обнаружить, что одна строка кода вызывает предупреждение, но для меня это абсолютно бессмысленно. Пожалуйста, смотрите следующий сильно укороченный код (он не работает, но в нем все еще появляются предупреждения)
function getDisplayName(WrappedComponent) {
return WrappedComponent.displayName || WrappedComponent.name || 'Component';
}
export const createSummaryChart = (fetchData, dataName) => {
class HOComponent extends Component {
constructor(props) {
super(props);
this.state = {
selectedYear: {'value': 2020, 'label': '2020'},
};
}
componentDidMount() {
token = this.props.authProps.token; //warning
//this.props.getProductsRevenuesChartData_ds0312(selectedCustomerLocation.value);
this.props.fetchData(selectedCustomerLocation.value); //warning
}
handleChangeYear = (newYear) => {
let minValue;
if (this.props.chartProps.chartData[0] == null) { //if I remove this in this line the warnings disappear
minValue = moment.tz(this.props.merchantProps.merchantData[0].merchant_timezone).year(newYear.value).month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0).utc().valueOf()
}
else {
minValue = this.props.chartProps.chartData[0][0]
}
};
render() {
const { isLoaded, chartData } = this.props.chartProps; //warning
return(
<div>
{isLoaded ?
<div>
</div>
: <Loader/>
}
</div>
)
}
}
const dataSelector = state => state[dataName];
const mapStateToProps = state => {
return {
chartProps: dataSelector(state),
merchantProps: state.merchantStore,
authProps: state.authStore
};
};
HOComponent.propTypes = {
fetchData: PropTypes.func.isRequired,
};
HOComponent.displayName = `createSummaryChart(${getDisplayName(HOComponent)})`;
return connect(mapStateToProps, { fetchData },)(HOComponent);
};
Если я уберу «this» в некоторых функциях, предупреждения исчезнут (см. Комментарии), особенно в те, где функция сохраняется в такой переменной, как handleChangeYear, но затем компонент больше не работает («состояние не определено» или «реквизиты не определены»).
Должен ли я просто игнорировать эти предупреждения PyCharm или мне нужно изменить код?