Доступ к избыточному хранилищу для получения потока данных - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь показать полосу загрузки, когда пользователь загружает PSD-файл на основе процесса загрузки.

Пример: enter image description here

Я отправляюдействие, когда файл начинает загрузку и магазин обновляется соответствующим образом.

  const postFormData = ({ url, data, files }) =>
    new Promise((resolve, reject) => {
    store.dispatch({ type: START_FILE_UPLOAD });

    const formData = new FormData();
    Object.keys(data).forEach(key => formData.set(key, data[key]));
    Object.keys(files)
      .map((key) => {
        const { file, filename } = files[key];
        return { key, file, filename };
      })
      .forEach(({ key, file, filename }) => formData.set(key, file, filename));

    const request = new XMLHttpRequest();

    request.open('POST', url);
    request.upload.addEventListener('progress', ({ lengthComputable, loaded, total }) => {
      if (lengthComputable) {
        const feedData = { loaded, total };
        store.dispatch({ type: START_FILE_UPLOAD, payload: feedData });
      }
    });
    request.addEventListener('load', (event) => {
      store.dispatch({ type: END_FILE_UPLOAD });
      resolve(event);
    });
    request.addEventListener('error', (event) => {
      store.dispatch({ type: END_FILE_UPLOAD });
      reject(event);
    });
    request.send(formData);
  });

Вот обновление магазина:

enter image description here

НоЯ не могу получить состояние loaded & loading из хранилища внутри компонента.

Как получить доступ к потоку данных из хранилища по мере его обновления внутри компонента?

1 Ответ

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

Если вы используете act-redux , используйте метод connect для подключения вашего компонента к магазину

import { connect } from 'react-redux'

class Sample extends Component {
  render() {
    return (
      <div>{this.props.loading}: {this.props.loaded}</div>
    );
  }
}

const mapStateToProps = state => ({
  loading: state.creations.loading,
  loaded: state.creations.loaded,
});

export default connect(mapStateToProps)(Sample);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...