Call function after dispatch from redux has finished

后端 未结 5 566
-上瘾入骨i
-上瘾入骨i 2020-12-14 20:48

All around it but not quite as I have enough of an idea of redux-thunk and of react-router but I am not getting this seemingly simple idea of:

5条回答
  •  [愿得一人]
    2020-12-14 21:34

    Have your action creator return a promise. This way when you invoke it, you can use .then() and in your then handler you can push a new address to the history.

    Thunks will return functions normally, but a promise differs in that you can act after completion.

    Example:

    static myActionCreator(somevar) {
      return dispatch => {
        return new Promise((resolve, reject) => {
          dispatch({
            type: "myaction",
            something: somevar
          });
    
          resolve()
        });
      }
    }
    

    So in this case, your thunk returns a promise. Then when you invoke like this:

    this.props.myActionCreator(somevar)
    .then(() => {
      this.props.history.push('/winning')
    })
    

    This thunk is just dispatching an action, but you could have some async call in there that has a callback, etc. and you resolve on completion.

提交回复
热议问题