ReactJS和Redux Toolkit:我可以使用'createAsyncThunk()'执行非异步副作用吗?

阿尔瓦罗·巴特勒(Alvaro Bataller)

这是我的登录操作的样子,并且可以正常运行:

export const login = createAsyncThunk(
'auth/login',
async (data, thunkAPI) => {
    const response = await API.login(data)

    //Store user data in local storage
    Storage.save('user', response.data)

    // Add token to HTTP headers
    API.setToken(response.data.key)

    return response.data
})

现在我需要执行注销功能,但是当使用“ createSlice()”时,我没有添加副作用的选项,因为它直接作用于reducer(并且Redux文档说我们不应该向reducer添加任何副作用)

// Slice
const authSlice = createSlice({
    name: 'auth',

    initialState: {
        user: null
    },

    reducers: {
        // Logout
        logout: (state, action) => {
            state.user = null
        },

    },
    extraReducers: {
        [login.fulfilled]: (state, action)=>{
            state.user = action.payload
        },
    }
})

所以我想我可以使用createAsyncThunk函数在遇到减速器之前执行副作用:

export const logout = createAsyncThunk(
    'auth/logout',
    async (thunkAPI) => {
        //Remove user data in local storage
        Storage.remove('user')

        // Remove token to HTTP headers
        API.removeToken()
    }
)

这是对“ createAsyncThunk”的适当使用吗?

希望有更多经验的人可以帮助您。

非常感谢!

y

这是一种可能的用途,但不必要的用途。

createAsyncThunk是对正常“ thunks动作”的抽象,该动作在之前分配“待处理”动作,之后分配“完成” /“拒绝”动作。如果您不希望这些生命周期操作,也可以编写一个普通的thunk。这些非常简单,RTK不包含任何帮助器。

const myThunkActionCreator = (id) => (dispatch, getState) => {
  // some sync or async stuff
  dispatch(someResult())
}

dispatch(myThunkActionCreator(5))

有关更多信息,请参阅官方教程的本节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ReactJS和Redux Toolkit:我可以使用'createAsyncThunk()'执行非异步副作用吗?

来自分类Dev

Redux-Toolkit createAsyncThunk Dispatch显示为未定义

来自分类Dev

Redux Toolkit的一些常见CreateAsyncThunk用例是什么

来自分类Dev

TypeError:使用createAsyncThunk和createSlice(@ reduxjs / toolkit“:” ^ 1.4.0)时,无法读取redux工具包中未定义的属性'pending'

来自分类Dev

我可以使用 HOC 用 graphql 和 redux 包装组件吗

来自分类Dev

使用redux和thunks分发的reactjs不起作用

来自分类Dev

我可以使用RestKit和Realm.io吗?

来自分类Dev

我可以使用@switch和Enumerations吗?

来自分类Dev

jekyll和sass; 我可以使用元吗?

来自分类Dev

我可以使用 Flexbox 创建背景和前景吗?

来自分类Dev

我可以使用通配符附加和订阅频道吗?

来自分类Dev

从Fireux提取数据时,来自Redux Toolkit的createAsyncThunk会产生未定义的有效负载

来自分类Dev

如何使用Scala和Mockito测试异步副作用

来自分类Dev

如何使用createAsyncThunk帮助程序调度AsyncThunk

来自分类Dev

我可以使用MVC,Razor和HTML5启动我的项目吗

来自分类Dev

我可以使用 calc 和 var 根据宽度更改我的 div 高度吗?

来自分类Dev

TypeScript:我可以使用“ import * from”和“ require(*)”混合使用吗?

来自分类Dev

我可以使用Linux使用Sql Server,Office和C#吗?

来自分类Dev

我可以使用 nginx 在单个端口中同时使用 http auth 和 sso 登录吗

来自分类Dev

我可以使用Order By和ToLower在DocumentDB上执行不区分大小写的字符串排序吗?

来自分类Dev

我们可以使用Spring-cloud-netflix和Hystrix重试失败的执行吗

来自分类Dev

可以使用我心爱的%格式器实现可变的填充字符和可变的宽度吗?

来自分类Dev

我可以使用flex将<divs>放置在容器内的左侧和右侧吗?

来自分类Dev

我可以使用CSP将请求限制为https:和'self'吗?

来自分类Dev

我们可以使用Ionic 2和AngularJs 1吗?

来自分类Dev

我可以使用roslyn和新的.net项目格式在构建时创建类吗?

来自分类Dev

我可以使用Ubuntu安装程序分区工具(Win 8.1和Ubuntu 13.04)吗?

来自分类Dev

我可以使用自动布局为横向和纵向方向提供不同的约束吗?

来自分类Dev

我可以使用单个Play WebSocket播放广播消息和私人消息吗?

Related 相关文章

  1. 1

    ReactJS和Redux Toolkit:我可以使用'createAsyncThunk()'执行非异步副作用吗?

  2. 2

    Redux-Toolkit createAsyncThunk Dispatch显示为未定义

  3. 3

    Redux Toolkit的一些常见CreateAsyncThunk用例是什么

  4. 4

    TypeError:使用createAsyncThunk和createSlice(@ reduxjs / toolkit“:” ^ 1.4.0)时,无法读取redux工具包中未定义的属性'pending'

  5. 5

    我可以使用 HOC 用 graphql 和 redux 包装组件吗

  6. 6

    使用redux和thunks分发的reactjs不起作用

  7. 7

    我可以使用RestKit和Realm.io吗?

  8. 8

    我可以使用@switch和Enumerations吗?

  9. 9

    jekyll和sass; 我可以使用元吗?

  10. 10

    我可以使用 Flexbox 创建背景和前景吗?

  11. 11

    我可以使用通配符附加和订阅频道吗?

  12. 12

    从Fireux提取数据时,来自Redux Toolkit的createAsyncThunk会产生未定义的有效负载

  13. 13

    如何使用Scala和Mockito测试异步副作用

  14. 14

    如何使用createAsyncThunk帮助程序调度AsyncThunk

  15. 15

    我可以使用MVC,Razor和HTML5启动我的项目吗

  16. 16

    我可以使用 calc 和 var 根据宽度更改我的 div 高度吗?

  17. 17

    TypeScript:我可以使用“ import * from”和“ require(*)”混合使用吗?

  18. 18

    我可以使用Linux使用Sql Server,Office和C#吗?

  19. 19

    我可以使用 nginx 在单个端口中同时使用 http auth 和 sso 登录吗

  20. 20

    我可以使用Order By和ToLower在DocumentDB上执行不区分大小写的字符串排序吗?

  21. 21

    我们可以使用Spring-cloud-netflix和Hystrix重试失败的执行吗

  22. 22

    可以使用我心爱的%格式器实现可变的填充字符和可变的宽度吗?

  23. 23

    我可以使用flex将<divs>放置在容器内的左侧和右侧吗?

  24. 24

    我可以使用CSP将请求限制为https:和'self'吗?

  25. 25

    我们可以使用Ionic 2和AngularJs 1吗?

  26. 26

    我可以使用roslyn和新的.net项目格式在构建时创建类吗?

  27. 27

    我可以使用Ubuntu安装程序分区工具(Win 8.1和Ubuntu 13.04)吗?

  28. 28

    我可以使用自动布局为横向和纵向方向提供不同的约束吗?

  29. 29

    我可以使用单个Play WebSocket播放广播消息和私人消息吗?

热门标签

归档