Не удается прочитать свойство 'setState' из неопределенного при отправке формы через реагирующий модал

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

  onModalSubmit: function () {
    let data = new FormData();

    data.append('id', this.state.user._id)
    data.append('image', this.refs.image.files[0])

    axios.patch('/api/userphoto', data, {
      'Content-Type': 'multipart/form-data'
    }).then(function (response) {

      console.log(response);

      window.localStorage.setItem('user', JSON.stringify(response.data.user));

      this.setState({ user: response.data.user, modalIsOpen: false });

    }).catch(function (error) {

      console.log(error);

    })

  }

А вот и модальный:

  <Modal
    isOpen={this.state.modalIsOpen}
    onAfterOpen={this.afterOpenModal}
    onRequestClose={this.closeModal}
    style={customStyles}
    contentLabel="Change Photo"
  >

    <h2>Change Photo</h2>
    <div className="field">
      <div className="ui center icon input">
        <input type="file" name="image" ref="image"/>
        <button className="ui button" onClick={this.closeModal}>Cancel</button>
        <button className="ui button" onClick={this.onModalSubmit}>Submit</button>
      </div>
    </div>

  </Modal>

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

Опять же, функция работает, она просто зависает на this.setState после ответа от сервера.

Любая помощь приветствуется, спасибо!

1 ответ

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

Вы используете синтаксис React.CreateClass завод. Я знаю это из вашего предыдущего поста.

Там вам не нужно связывать методы. Они уже связаны.

Проверьте полный ответ отсюда.

введите описание изображения здесь

Другие вопросы по тегам