TypeError: Не удается прочитать свойство «validateName» неопределенных

голоса
0

Я новичок в ReactJs. В моем приложении, я вставил следующий код для проверки TEXTAREA, но когда я печатаю на него, он бросает следующее сообщение об ошибке.

NewBrand.js:67 Uncaught TypeError: Cannot read property 'validateName' of undefined
        at handleNameChange (NewBrand.js:67)
        at TextArea._this.handleTextareaChange (TextArea.js:94)
        at HTMLUnknownElement.callCallback (react-dom.development.js:100)
        at Object.invokeGuardedCallbackDev (react-dom.development.js:138)
        at Object.invokeGuardedCallback (react-dom.development.js:187)
        at Object.invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:201)
        at executeDispatch (react-dom.development.js:461)
        at executeDispatchesInOrder (react-dom.development.js:483)
        at executeDispatchesAndRelease (react-dom.development.js:581)
        at executeDispatchesAndReleaseTopLevel (react-dom.development.js:592)

Мой код выглядит следующим образом:

    handleNameChange(event) {
        const value = event.target.value;
        this.setState({
        name: {
            text: value,
            ...this.validateName(value)
        }
    });

    }

    isFormInvalid() {
        if(this.state.name.validateStatus !== 'success') {
            return true;
        }
    }

  validateName = (nameText) => {
            if(nameText.length === 0) {
                return {
                    validateStatus: 'error',
                    errorMsg: 'Please enter the Brand name!'
                }
            } else if (nameText.length > POLL_QUESTION_MAX_LENGTH) {
                return {
                    validateStatus: 'error',
                    errorMsg: `Name is too long (Maximum ${POLL_QUESTION_MAX_LENGTH} characters allowed)`
                }
            } else {
                return {
                    validateStatus: 'success',
                    errorMsg: null
                }
            }
        }

Пожалуйста ЛФВЭ мне решить эту проблему

Задан 20/10/2018 в 05:40
источник пользователем
На других языках...                            


1 ответов

голоса
1

Когда вы подключаете обработчик изменения (вероятно, в методе визуализации) ваш JSX выглядит примерно так

<textarea onChange={ this.handleNameChange } ...

Измените его на

constructor(props){
  super(props);
  this.handleNameChange = this.handleNameChange.bind(this);
}

<textarea onChange={this.handleNameChange} ...

Это гарантирует , что по- thisпрежнему относится к компоненту объекта при выполнении изменения обратного вызова.

Пожалуйста, обратите внимание, что вы не рекомендуется, чтобы связать функцию непосредственно в визуализации или где-либо еще в компоненте, кроме конструктора. Поскольку связывание в визуализации вызывает новую функцию, которая будет создан в расслоении файла каждый раз, когда компонент делает, поэтому мы не рекомендуем делать это.

Как мудрый, где у вас есть функции обработчика события связывают их в конструкторе и использовать ссылку, как упоминалось выше

Ответил 20/10/2018 в 05:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more