PyCharm заявляет о «потенциально недопустимом использовании» в HOC - PullRequest
0 голосов
/ 18 марта 2020

Следуя этому примеру 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 или мне нужно изменить код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...