【问题标题】:react redux nested dispatch not called未调用 react redux 嵌套调度
【发布时间】:2017-06-02 09:12:56
【问题描述】:

我正在使用带有 react native 的 redux,我需要重新使用我的操作

const fetchPosts = () => {

  return (dispatch) => {

    Api.get('/posts')
       .then(response => dispatch({type: FETCH_POSTS_SUCCESS, payload: response}))
       .catch(err => dispatch({type: FETCH_POSTS_FAIL, payload: err}))
  }
}

我想在登录后总是获取帖子

const login = ({username, password}) => {

  return (dispatch) => {

    Api.post('/auth', {username, password})
       .then(response => dispatch({type: LOGIN_SUCCESS, payload: response})
       .then(() => fetchPosts())
       .catch(err => dispatch({type: LOGIN_FAIL, payload: err}))
  }
}

问题是获取帖子调度永远不会发生,因为。

有什么建议吗?

【问题讨论】:

    标签: react-native redux redux-thunk


    【解决方案1】:

    你应该dispatch(fetchPosts()),你可以在同一个then回调中直接在dispatch({type: LOGIN_SUCCESS, payload: response}之后调用它,或者保留在第二个then回调中,它们都可以:

    const login = ({username, password}) => {
    
      return (dispatch) => {
    
        Api.post('/auth', {username, password})
          .then(response => {
            dispatch({type: LOGIN_SUCCESS, payload: response}
            dispatch(fetchPosts())
          })
          .catch(err => dispatch({type: LOGIN_FAIL, payload: err}))
      }
    }
    

    【讨论】:

      【解决方案2】:

      代码不起作用的主要原因是 fetchPosts 没有返回承诺。试试下面的代码:

      const fetchPosts = (dispatch) => {
          return Api.get('/posts')
             .then(response => dispatch({type: FETCH_POSTS_SUCCESS, payload: response}))
             .catch(err => dispatch({type: FETCH_POSTS_FAIL, payload: err}))
      }
      
      const login = ({username, password}) => {
        return (dispatch) => {
          Api.post('/auth', {username, password})
             .then(response => dispatch({type: LOGIN_SUCCESS, payload: response})
             .then(() => fetchPosts(dispatch))
             .catch(err => dispatch({type: LOGIN_FAIL, payload: err}))
        }
      }

      【讨论】:

      • 对不起,我在调度登录操作时犯了一个错误(我确实更正了我的代码)
      • 我想在其他地方重用 fetchPosts()
      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2018-05-30
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2018-06-28
      相关资源
      最近更新 更多