在 redux 中,改变数据是一种好的做法吗?

In redux, is altering data in an action good practice?

我是一个初学者,仍在掌握 redux,想知道我在 action creator 中处理数据的方式是否是好的做法。

我正在构建一个从 reddit 获取帖子的应用程序。 action creator fetchPosts 从 reddit 获取数据,然后过滤掉置顶帖子并限制发送到 reducer 的帖子数量。

export const fetchPosts = (subreddit) => async (dispatch) => {
  const res = await fetchReddit.get(`/r/${subreddit}.json`);
  const postsArray = res.data.data.children;
  //filter out any stickied posts in array
  const postsWithstickiedRemoved = postsArray.filter(post => !post.data.stickied);
  dispatch({ type: FETCH_POSTS, payload: postsWithstickiedRemoved.slice(0, 21) })
}

这是好的做法,还是我应该将 res.data 发送到减速器并在那里进行操作?这有关系吗??

谢谢

如果参考官方redux documentation:

actions are plain JavaScript objects that have a type field.

所以在你的情况下,行动是

{ type: FETCH_POSTS, payload: postsWithstickiedRemoved.slice(0, 21) }.

您的 fetchPosts 函数是一个服务,而不是一个动作,在服务中操作数据是完全可以的。