Как ждать отправку акции? - PullRequest
1 голос
/ 29 апреля 2020

В редуксе у меня есть (счетчик, удаленный счетчик). Я установил его по умолчанию 0 для обоих!

Основная идея заключается в сравнении, если счетчик равен удаленному счетчику, я хочу отправить действие ' true / false ', который блокирует приложение

. На главном экране получите удаленный счетчик из API, затем сохраните его в хранилище редуксов, он хорошо сохранится

, но у меня есть оператор if, который проверяет, если счет = = удаленный счетчик Я блокирую приложение

Так что это утверждение вызывается перед сохранением удаленного счета, я думаю, хотя я добавляю его в then ()

Главный экран

  getRemoteCount = async () => {
    try {
      let response = await API.get('/number/subsribtion');
      let remoteCount = response.data.number;
      this.props.saveRemoteCount(remoteCount); // it's saved the remote count! 
    } catch (err) {
      console.log(err);
    }
  };




 componentDidMount() {
    const {remoteCount, count} = this.props;
    this.getRemoteCount().then(() => {
      if (count == remoteCount) {
        console.log('count', count); 
        console.log('remoteCount', remoteCount);//it's log 0!! so the next line invoke!
        this.props.isAppLock(true);
      }
    });
}

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Используйте рендер, чтобы получить обновленный счет. componentDidMount запускается, когда компонент монтируется в первый раз. Сохраните счет в redux store и mapToState в компоненте.

class C {
  getRemoteCount = async () => {
    try {
      let response = await API.get("/number/subsribtion");
      let remoteCount = response.data.number;
      this.props.saveRemoteCount(remoteCount); // it's saved the remote count!
    } catch (err) {
      console.log(err);
    }
  };
  componentDidMount() {
    this.getRemoteCount();
  }
  render() {
    const { remoteCount, count } = this.props;
    if (count == remoteCount) {
      console.log("count", count);
      console.log("remoteCount", remoteCount); //it's log 0!! so the next line invoke!
      this.props.isAppLock(true);
    }
  }
}
0 голосов
/ 02 мая 2020

Вы можете использовать функцию dispatch async, используя избыточный thunk.

  1. Установить избыточный thunk.

  2. Использовать в качестве промежуточного программного обеспечения внутри магазина.

import thunk from 'redux-thunk';
import rootReducer from './reducers';

const store = createStore(rootReducer, applyMiddleware(thunk));
Используйте его для отправки asyn c действий.
return async dispatch=>{ let res= await authLogin(data)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...