在 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 函数是一个服务,而不是一个动作,在服务中操作数据是完全可以的。
我是一个初学者,仍在掌握 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 函数是一个服务,而不是一个动作,在服务中操作数据是完全可以的。