Объединение в цепочку избыточных действий - PullRequest
0 голосов
/ 29 августа 2018

Как я могу изменить toggleShowUsers для первого вызова fetchUser, а затем отправлять с типом Constants.ShowUsers после?

toggleShowUsers: () => {
  return dispatch => {
    dispatch({
      type: Constants.ShowUsers,
    });
  }
},
fetchUser: (userId) => {
  return dispatch => {    
    let url = ....
    axios.get(url)
      .then(function(resp) {
        dispatch({
          type: Constants.fetchUser,
          users: resp.data.users,
        });
      });
  };
},

Итак, в моем компоненте реакции я делаю это в

componentDidMount() {
    const { dispatch } = this.props;

    dispatch(Actions.toggleShowUsers());
}

Я хочу сначала вызвать fetchUser, а затем toggleShowUsers.

1 Ответ

0 голосов
/ 29 августа 2018

Есть несколько способов добиться этого. Один из подходов заключается в следующем:

const toggleShowUsers = () => {
  return dispatch => {

    // [UPDATE]
    // Once the toggle is complete, do fetch 
    // request. Not sure how you plan to aquire
    // the id, so am substituting value 1 here
    fetchUser(1)(dispatch).then(() => {

        // [UPDATE] 
        // In promise handler, dispatch ShowUsers
        // when fetchUser has completed
        dispatch({
          type: Constants.ShowUsers,
        });
    });
  }
}

const fetchUser = (userId) => {
  return dispatch => {    
    let url = ....

    // [UPDATE] 
    // Return promise from axios.get 
    return axios.get(url)
      .then(function(resp) {
        dispatch({
          type: Constants.fetchUser,
          users: resp.data.users,
        });
      });
  };
}

export default { toggleShowUsers, fetchUser }
...