Я пытаюсь показать полосу загрузки, когда пользователь загружает файл PSD в зависимости от процесса загрузки.
Я отправляю действие, когда файл начинает загружаться и магазин соответственно обновляется.
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);
});
Вот обновление магазина:
Но я не могу получить состояние loaded и loading из хранилища внутри компонента.
Как я могу получить доступ к потоку данных из магазина по мере его обновления внутри компонента?
@Abhishek Не могли бы вы поделиться кодом или ссылкой?
просто посмотрите это: `redux.js.org/api/store`
Вы используете React-Redux?
@Abhishek Да, я
Простите, я ничем не могу помочь. Я в основном работал с angular redux ngRx, а не с реакцией.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы используете React-Redux, используйте его метод подключения для подключения вашего компонента к магазину.
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);
Я обновил свой вопрос. Внутри компонента я пробовал то же, что вы предложили, а также пробовал метод жизненного цикла, например getDerivedStateFromProps
Если вы покажете нам компонент, в котором вы использовали connect, и расскажите, что произошло, возможно, мы сможем помочь диагностировать, почему он не работает.
подписаться на магазин с помощью селектора.