Реагирующий конструктор объявляет props cra sh intellisense vscode - PullRequest
0 голосов
/ 03 апреля 2020

Любой смысл, почему я не могу объявить мои реквизиты по умолчанию, как это? Я новичок в современном интерфейсе и пришел из js ванили, извините, если мне кажется сложным понять логи c!

class MenueButtons extends Component {
    constructor(props) {
        super(props);
        this.props = {
            /**@type {number} description*/
            count: props?.count || 0,
            /**@type {string} description*/
            test2: props?.test2 || '',
        }
    }

это приложение, если нужно пропустить все реквизиты, определенные ex: <MenueButtons count='0' /> image Warning: MenueButtons(...): When calling super() in `MenueButtons`, make sure to pass up the same props that your component's constructor was passed.

Единственный способ, которым я могу видеть, - поступать так после урока!

MenueButtons.defaultProps = {
    count: 0,
    test2: '',
};

Но для меня это выглядит странно, и i потерял мой смысл в VsCode ! Любой способ объявить мои реквизиты в конструкторе и заставить работать intellisense нормально?

Я пытаюсь объявить в конструкторе, потому что это единственный способ заставить интеллект работать так. Объявите с помощью defaultProps, прервите предложение и декларативную проверку.


с объявлением в конструкторе image image


с объявлением только defaultProps image


РЕДАКТИРОВАТЬ: Хорошо, после многих испытаний, это выглядит более интуитивно понятным и логичным c для меня. 100% совместимость с intellisense из IDE vsCode.


/**Class description */
class MenueButtons extends Component {
    constructor(props) {
        super(props);
        /**@type {{aaa?: number, bbb?: string }} */
        this.props
    }

    render() {

еще не идеально, , если у вас есть другая более чистая идея или более logi c, я открыт для любых предложений, спасибо , Возможно, я также могу создать typedef верх документа для публикации в defaultProps!

    /**
        * @typedef {Object} _defaultProps - ...descriptions
        * @property {number} [_defaultProps.aaa] - ...descriptions
        * @property {string} [_defaultProps.bbb] - ...descriptions
    */
       /**@type {_defaultProps} */
        this.props

спасибо за любую помощь

1 Ответ

1 голос
/ 03 апреля 2020

Полагаю, главная проблема здесь в том, что вы пытаетесь переназначить this.props. Реквизиты должны рассматриваться как данные только для чтения в вашем компоненте.

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