состояние redux показывает данные, но реквизит возвращает ноль внутри функции компонента - PullRequest
0 голосов
/ 05 мая 2020
const DoctorResearchArticle = props => {

console.log('props.doctor_indi_articles', props.doctor_articles); //here can able to access redux store data after triggerring the dispatch action at line no 6

const handle_edit_click = async (id) => {
await props.doctor_ind_article(id);
console.log('props.doctor_indi_articles', props.doctor_articles);
// here after triggerring the api and dispatching the data to store, at the initial time it shows null
}

}
const mapDispatchToProps = (dispatch) => {
  return {
   doctor_ind_article: (article_id) =>dispatch(getDocIndivisualArti(article_id)),

  }
  }

  const mapStateToProps = (state) => {
  return {
    doctor_articles: state.doctor.doctor_ind_article
  };
};


export default connect(
  mapStateToProps,
  mapDispatchToProps
)(DoctorResearchArticle);

проблема здесь в том, что данные redux изначально показывают значение null, после вызова действия отправки внутри функции основного компонента, как указано в коде, важная вещь здесь заключается в том, что при вызове действия отправки запускается api и данные, хранящиеся в хранилище redux, также обновляются. дело в том, что мы можем получить доступ к данным хранилища redux внутри основного компонента, но не в функциях внутри основного компонента. если я регистрирую данные реквизита в основном компоненте, он показывает обновленные данные состояния, но если записывать то же самое внутри функции, тогда сначала он показывает null, после чего загружает (журнал) данные. это меня очень беспокоит. и в связи с этим я попытался использовать store.subcribe (listener), где функция получает данные, когда хранилище обновляется внутри основного компонента. это работает, но это займет слишком много времени. так что это не подходит для моего случая. так что любая помощь приветствуется. спасибо.

1 Ответ

0 голосов
/ 05 мая 2020

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

...