Airbnb JS StyleGuide и history.push не объединяются - PullRequest
0 голосов
/ 31 октября 2018

Я пишу приложение React, а именно навигационную панель. У меня есть логотип и navItems там. Отображение логотипа и цвет фона панели навигации условны. В esLint добавлено руководство Aibnb, теперь мой код навигационной панели выглядит следующим образом:

class Toolbar extends Component {
    handleClick = () => {
        this.props.history.push('/');
    }

    render() {
        const { color, showLogo } = this.props;
        return (
            <header
                style={{
                    backgroundColor: color,
                }}
                className={classes.Toolbar}
            >
                <Logo click={this.handleClick} show={showLogo} />
                <NavItems />
            </header>
        );
    }
}

Toolbar.propTypes = {
    color: PropTypes.string.isRequired,
    showLogo: PropTypes.string.isRequired,
};

export default withRouter(Toolbar);

и я получаю следующие ошибки eslint:

eslint errors

(строка 11) равно

this.props.history.push('/');

Как преобразовать этот метод, чтобы код компилировался и работал без ошибок?

(Пытался переписать его как разрушающее назначение реквизита, получил ошибку, например, невозможно получить «толчок» из неопределенного)

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Установка history PropType поможет вам избавиться от ошибки:

Toolbar.propTypes = {
  color: PropTypes.string.isRequired,
  showLogo: PropTypes.string.isRequired,
  history: PropTypes.shape({
    push: PropTypes.func.isRequired,
  }).isRequired,
};
0 голосов
/ 31 октября 2018

вы должны обновить

Toolbar.propTypes = {
color: PropTypes.string.isRequired,
showLogo: PropTypes.string.isRequired,
history:PropTypes.node
};

или

const {history} = this.props

Обновление

history:PropTypes.shape({push:PropTypes.func})

...