React Action Creator 和 Action Type 命名约定?

use*_*768 3 reactjs redux

是否有关于命名操作创建者和操作类型的官方命名约定

查看教程,动作创建者和动作类型的主题是与动作创建者几乎一对一地命名动作类型。

举个例子,假设我们有一个获取博客文章的应用程序

本教程(评分最高的 Udemy 教程)对异步操作创建器使用了以下命名约定:

export const fetchPosts = () => async dispatch => {
    const response = await postsAPI.get('/posts');

    dispatch({type: 'FETCH_POSTS', payload: response.data});
};
Run Code Online (Sandbox Code Playgroud)

然而,根据正在调度的内容更准确地命名操作对象(以表示成功或失败)不是更有意义吗?不是将动作创建者函数名称与动作类型匹配,而是:

export const fetchPosts = () => async dispatch => {
    const response = await postsAPI.get('/posts');
    
    if (response.status === 200) {
       dispatch({type: 'FETCHED_POSTS', payload: response.data});
    } else {
        dispatch({type: 'FAILED_TO_FETCH_POSTS', payload: response});
    }
};
Run Code Online (Sandbox Code Playgroud)

phr*_*hry 5

是的,官方风格指南建议将操作类型编写为domain/eventname.

这与风格指南中的其他一些内容是一致的。

除此之外,我更喜欢我的操作是过去的,比如todos/added当它们描述应用程序中发生的事情或用户所做的事情时,并且是命令式的,比如todos/save当它们描述应该在中间件中处理的副作用时(然后,它可能会发出 API 请求,并最终采取todos/saved实际导致减速器发生更改的操作)。

RTK 隐式完成了更多事情,例如,createAsyncThunk将为每个 thunk 自动创建三个操作: yourActionPrefix/pendingyourActionPrefix/fulfilledyourActionPrefix/rejected