react redux 中动作函数的目的是什么?他们都应该 return 一个进入 store/middleware 的动作或功能吗?

What is the purpose of action functions in react redux? Should they all return an action or function that goes to the store/middleware?

react redux reddit app example 中,#shouldFetchPosts 是否应该成为操作的一部分?它更像是一个助手而不是一个实际的动作,这似乎很奇怪,它应该 return 一个被分派到商店的对象。我知道动作可以包括用于将异步相关内容发送到中间件的函数,但#shouldFetchPosts 似乎不适合这个目的,也不适合传统动作之一。有没有更好的方法来组织这个功能?难道一开始就不应该抽象出来吗?

function fetchPosts(reddit) {
  return dispatch => {
    dispatch(requestPosts(reddit))
    return fetch(`https://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => dispatch(receivePosts(reddit, json)))
  }
}

function shouldFetchPosts(state, reddit) {
  const posts = state.postsByReddit[reddit]
  if (!posts) {
    return true
  }
  if (posts.isFetching) {
    return false
  }
  return posts.didInvalidate
}

export function fetchPostsIfNeeded(reddit) {
  return (dispatch, getState) => {
    if (shouldFetchPosts(getState(), reddit)) {
      return dispatch(fetchPosts(reddit))
    }
  }
}

收获不错。是的,你是对的! shouldFetchPosts 不是一个动作。这是一个辅助功能。它不应该放在第一位的动作创造者。有人可能认为 redux 示例有很大的改进空间。但从好的方面来说,这也是学习东西的好方法。你在他们的代码中发现了一个错误。您应该继续并在您的示例项目中更正它。