вот краткий обзор моего компонента OneRoadmap: в async componentDidMount я сначала вызываю «await this.props.getRoadmaps», который является действием в моем Redux, это действие отправит запрос на получение моего API, который будет получатьэлементы из моей базы данных, затем из этих полученных элементов мы отправляем отправку редуктору с вызовом GET_ROADMAPS, это делается как
export const getRoadmaps = () => dispatch => {
dispatch(setRoadmapsLoading());
axios
.get("/api/roadmaps")
.then(res => dispatch({ type: GET_ROADMAPS, payload: res.data }));
};
, и мой компонент выглядит так:
async componentDidMount() {
await this.props.getRoadmaps();
var location1 = this.props.location.pathname;
var n = location1.slice(9);
var current_roadmaps = this.props.roadmap.roadmaps;
this.displayRoadmap = current_roadmaps.filter(
eachRoadmap => eachRoadmap._id == n
);
// now we have a roadmap
this.setState({
treeData: this.displayRoadmap[0].roadmap[0],
loading: false
});
}
GET_ROADMAPS обновит мое состояние Redux.
Проблема выглядит следующим образом: await this.props.getRoadmaps () будет только ждать, пока getRoadmaps () отправит диспетчер GET_ROADMAPS, что означает, что он не будет ждать, пока GET_ROADMAPS обновит состояние избыточности , это означает, что несколькими строками позже, когда я сделаю this.props.roadmap.roadmaps, оно будет неопределенным, потому что this.props.roadmap.roadmaps, вероятно, вызывается до того, как GET_ROADMAPS завершит обновление моего состояния избыточности.
Пожалуйста, помогите мне, если есть какие-либо способы решить проблему :) и, пожалуйста, исправьте меня, если проблема не в том, что я думаю.
PS Я ссылался на https://www.robinwieruch.de/react-fetching-data, эта информация там обычно будет работать, но, похоже, так как у меня есть дополнительная отправка в мое хранилище с избыточностью, отправка обновляет хранилище после того, как я вызываю this.props.roadmap.roadmaps, что означает, что я получаю неопределенное значение и не могу использовать эту переменную при рендеринге