Как установить Add две функции для 'onchange в ReactJS - PullRequest
0 голосов
/ 30 ноября 2018

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

Функция 1

handleChange = ({ fileList }) => this.setState({ fileList });

Функция 2

handleUpload = e => {
    const reader = new FileReader();
    const storeUser = JSON.parse(localStorage.getItem('user'));
    reader.onload = function(upload) {
      fetch(`http://..../api/s3/uploadtoaws`, {
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        },
        method: 'POST',
        body: JSON.stringify({
          userId: storeUser._id,
          type: 'employee',
          content: upload.target.result,
          key: e.file.name,
          oldKey: '',
        }),
      })
        .then(response => response.json())
        .then(res => {
          console.warn(res);
        });
      // .done();
    };

    reader.readAsDataURL(e.file.originFileObj);
  };

Реализация события

    <Upload
            listType="picture-card"
            fileList={fileList}
            onPreview={this.handlePreview}
            onChange={this.handleChange}
          >

1 Ответ

0 голосов
/ 30 ноября 2018

Просто вызовите функцию внутри JSX с указанным аргументом, однако важно использовать вашу функцию handleUpload в качестве функции каррирования, чтобы у вас был доступ к event и fileList.

onChange={this.handleUpload(someObj)}

handleUpload = ({ fileList }) => (e) => { // fileList is a field in someObj
    this.setState({ fileList });

    const reader = new FileReader();
    const storeUser = JSON.parse(localStorage.getItem('user'));
    reader.onload = function(upload) {
      fetch(`http://..../api/s3/uploadtoaws`, {
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        },
        method: 'POST',
        body: JSON.stringify({
          userId: storeUser._id,
          type: 'employee',
          content: upload.target.result,
          key: e.file.name,
          oldKey: '',
        }),
      })
        .then(response => response.json())
        .then(res => {
          console.warn(res);
        });
      // .done();
    };

    reader.readAsDataURL(e.file.originFileObj);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...