React Redux 为什么大多数指南将每种类型分开?
React Redux Why most guideline separate every types?
我很好奇为什么大多数指南都将每种类型分开?
例如:
//List of Posts
FETCH_POSTS: 'fetch_posts',
FETCH_POSTS_SUCCESS: 'fetch_posts_success',
FETCH_POSTS_ERROR: 'fetch_posts_failure',
// Single POST
FETCH_POST: 'fetch_post',
FETCH_POST_SUCCESS: 'fetch_post_success',
FETCH_POST_ERROR: 'fetch_post_failure',
我在成功和错误中找到了想法。但是对于 fetch_posts
和 fetch_post
来说只有一个作业可以触发 ex: isLoading
为什么它必须分开?为什么不为 ex 制作一种类型:FETCHING
?
谢谢
我认为答案是行动不是你想做的——而是已经发生的事情(根据 Dan Abramov 的说法)。所以没有地方可以“*ing”:FETCH_POST
可能被命名为FETCH_POST_REQUEST
(用户刚刚请求的帖子),然后成功或失败。
我过去问过同样的问题,在某个地方找到了答案,这只是其中一种实现。它有其优点和缺点,但事实上,标准 FSA 包含一个对象,其元数据可能包含状态(请求/成功/失败,也许还有更多)。
不同动作类型的解决方案的一些优点:
- 减速器中的一个简单开关;
redux-saga
的简单用法(takeEvery('FETCH_POST')
比 takeEvery 更容易并通过一些道具进行过滤);
- 名称清晰(例如,在 redux-devtools 中查看调度操作列表更容易调试);
但另一种方法也有优势:
- 您可以轻松处理减速器中的任何异步进程以执行任何操作(例如,如果您只是在寻找
action.meta.status
)。但是它的应用范围比较窄,比如所有异步任务的单一进度条。
- 操作类型较少;
我相信两者都有生命权,但是你应该清楚它会给你的应用带来什么好处,哪个更容易维护。
当然,没有什么可以阻止您混合使用这些方法,但这可能会导致错误和支持困难,所以要小心。
我很好奇为什么大多数指南都将每种类型分开?
例如:
//List of Posts
FETCH_POSTS: 'fetch_posts',
FETCH_POSTS_SUCCESS: 'fetch_posts_success',
FETCH_POSTS_ERROR: 'fetch_posts_failure',
// Single POST
FETCH_POST: 'fetch_post',
FETCH_POST_SUCCESS: 'fetch_post_success',
FETCH_POST_ERROR: 'fetch_post_failure',
我在成功和错误中找到了想法。但是对于 fetch_posts
和 fetch_post
来说只有一个作业可以触发 ex: isLoading
为什么它必须分开?为什么不为 ex 制作一种类型:FETCHING
?
谢谢
我认为答案是行动不是你想做的——而是已经发生的事情(根据 Dan Abramov 的说法)。所以没有地方可以“*ing”:FETCH_POST
可能被命名为FETCH_POST_REQUEST
(用户刚刚请求的帖子),然后成功或失败。
我过去问过同样的问题,在某个地方找到了答案,这只是其中一种实现。它有其优点和缺点,但事实上,标准 FSA 包含一个对象,其元数据可能包含状态(请求/成功/失败,也许还有更多)。
不同动作类型的解决方案的一些优点:
- 减速器中的一个简单开关;
redux-saga
的简单用法(takeEvery('FETCH_POST')
比 takeEvery 更容易并通过一些道具进行过滤);- 名称清晰(例如,在 redux-devtools 中查看调度操作列表更容易调试);
但另一种方法也有优势:
- 您可以轻松处理减速器中的任何异步进程以执行任何操作(例如,如果您只是在寻找
action.meta.status
)。但是它的应用范围比较窄,比如所有异步任务的单一进度条。 - 操作类型较少;
我相信两者都有生命权,但是你应该清楚它会给你的应用带来什么好处,哪个更容易维护。
当然,没有什么可以阻止您混合使用这些方法,但这可能会导致错误和支持困难,所以要小心。