首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

redux-toolkit使用来自另一个thunk reducer的同一切片中的actionCreater

redux-toolkit是一个用于简化Redux开发的官方工具包。它提供了一组用于管理Redux状态的实用函数和API,包括创建reducers、actions和thunks的简化方法。

在redux-toolkit中,一个切片(slice)是一个包含相关reducer和actions的模块化单元。每个切片都有自己的reducer函数和action creators,用于处理特定的状态和行为。

对于使用来自另一个thunk reducer的同一切片中的action creator,可以通过在action creator中使用createAsyncThunk函数来实现。createAsyncThunk函数接受两个参数:一个字符串类型的action类型和一个返回Promise的回调函数。

以下是一个示例代码:

代码语言:txt
复制
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';

// 定义一个thunk action creator
const fetchUser = createAsyncThunk('users/fetchUser', async (userId, thunkAPI) => {
  const response = await fetch(`/api/users/${userId}`);
  return response.json();
});

// 创建一个切片(slice)
const userSlice = createSlice({
  name: 'users',
  initialState: { user: null, loading: false, error: null },
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchUser.pending, (state) => {
        state.loading = true;
      })
      .addCase(fetchUser.fulfilled, (state, action) => {
        state.loading = false;
        state.user = action.payload;
      })
      .addCase(fetchUser.rejected, (state, action) => {
        state.loading = false;
        state.error = action.error.message;
      });
  },
});

// 导出reducer和action creators
export const { actions: userActions, reducer: userReducer } = userSlice;

// 在其他地方使用action creator
dispatch(fetchUser(userId));

在上面的示例中,我们使用createAsyncThunk创建了一个名为fetchUser的thunk action creator。它的action类型为users/fetchUser。在回调函数中,我们可以执行异步操作(例如发起API请求),并在异步操作完成后使用fulfilledpendingrejected等额外的reducer来更新状态。

这是一个简单的示例,你可以根据自己的需求来定义更多的reducers和actions,并在应用程序中使用它们。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库MySQL(CMYSQL)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redux 文档到底说了什么(下)

: {}} 结构 使用 redux-thunk 来做异步,手动返回函数 手动使用表驱动来替换 reducer switch-case 模式 手动将 selector 进行封装成函数 手动引入 immer...带来好处是直接内置了 redux-thunk 和 redux-devtools-extension,这个 devtools 只要将 devTools: true 就可以直接使用。...createSlice 上面的代码我们看到是用 combineReducers 来组装大 reducer ,前文也说过 todos, filter, loading 其实都是各自 slice,redux-toolkit...异步 之前我们用 redux-thunk 都是 action creator 返回函数方式来写代码,redux-toolkit 提供一个 createAsyncThunk 直接可以创建 thunk(其实就是返回函数...createSlice 另一个好处就是可以直接获取 action,不再需要每次都引入常量,不得不说,使用字符串来 dispatch 真的太 low 了。

75120

Redux介绍及源码解析

、Redux-Thunk)....这篇文章总结很好, 大家可以看一看, 大致归纳如下: ● 对于同一个 action type 来说, 也许其内部大多数逻辑都相似, action creator 正好可以收拢这部分逻辑, 避免在多个组件中进行重复创建...redux-toolkit legacy_createStore, // 跟createStore一样 combineReducers, // 不同reducer组合函数 bindActionCreators...中间件可以进行各种异步操作、日志记录等等, 比如说用最多中间件应该就是 redux-thunk, 这是与 Flux 重要区别之一....当然, 现在官方已经开始推荐使用 redux-toolkit, 他是基于 Redux 最佳实践, 简化了 Redux 编写调用, 他采用了函数式、柯里化等编程思维, 具体差异可以参考官方说明.

2.5K20

React全家桶之Redux使用

“限制”在这里绝不是贬义词,恰恰相反,是对技术框架最高夸奖,因为限制能够确保程序按照可控方式进化。 在计算机软件世界里,造物主就是人类自己,没有物理化学限制,一皆有可能。...也正因为一皆有可能,一个问题即使没有无数种解法,也会有很多很多种解法。 但是,拥有很多方案并不表示我们应该使用所有的方案。 软件要由程序员来维护和开发,研发部门管理也是程序员。...创建一个 store.js store同时必须对应一个 reducer函数:他接收两个参数,分别是当前 state 树和要处理 action,返回新 state 树。...actionCreater。...应该考虑把hook相关逻辑(reducer)从是store中分离。

1.3K20

用 Redux 做状态管理,真的很简单🦆!

作为一名前端工程师,不少小伙伴对于 Redux 概念、使用可能还是比较模糊,上手使用心智负担也比较重!...counter.ts 接下来看看怎么便捷创建一个 Reducer,以前使用 Redux 总是需要手动创建多个文件,reducer、action、action creator,但现在可以直接借助 @redux...const { increment, decrement, incrementByAmount, decrementByAmount } = CounterSlice.actions; // 异步 thunk...简单总结一下: 推荐在 React 项目中使用 Redux 作为状态管理 需要掌握 Redux 中设计思想 推荐使用 @redux-toolkit,可降低心智负担,显著提升研发效率 当掌握 @redux-toolkit...后,可补充阅读 Redux 原本 API,思考一下为什么 @redux-toolkit 要这么做?

3.4K40

【Redux】:Redux 指北

: 状态很多、很复杂 一个状态可能要在多个地方使用 多个地方可能会更新同一个状态 多个地方状态展示要能够及时得到同步 状态变动之间存在联动关系(比如:如果要改A,那么B、C、D也得跟着改;如果改B,那么...使用 Redux 是个好选择 但是需要注意,如果用了 Redux,需要把应用所有状态都存进去么? NO....中字段,比reducer能处理字段少......9.3. redux-thunk redux-thunk 中间件扩展了 redux dispatch 功能,它允许你 dispatch 一个函数(即:thunk),异步逻辑就放在这个函数中处理; 源码...回顾一下 createStore 中 enhancer 增强技能 使用示例 applyMiddleware 机制核心在于组合 compose,将不同 middlewares 一层一层包裹到原生

1.5K40

react知识总结_六年级教学工作总结个人

大家好,又见面了,我是你们朋友全栈君。 简介 这次要总结是对 store 和 reducer 拓展,比如发送异步 action 操作,还有一个就是对多个 reducer 管理。...) store 可以接受三个参数,第一个参数是 reducer ,第二个参数代表状态默认值,用于覆盖 reducer 默认状态。...action 信息: redux-thunk import thunk from 'redux-thunk'; import { createLogger } from 'redux-logger...这种异步思路就是使用 Action Creator 返回一个函数,然后使用 redux-thunk 让 dispatch 能够接受一个函数作为参数。...总结 以上三个中间件都是对 store 拓展,使用 applyMiddleware 并且分别传入三个 中间件 ,传入时必须要遵循顺序,否则会出问题: applyMiddleware(thunk,

64820

useContext

当然在这里我们还是要额外讨论下是不是需要使用Context,使用Context可能会带来一些性能问题,因为当Context数据更新时,会导致所有消费Context组件以及子组件树中所有组件都发生re-render...,类似于Redux使用方法,其接收一个形如(state, action) => newStatereducer,并返回当前state以及与其配套dispatch方法。...,对于这个问题我们也有一定优化策略: 可以完成或者直接使用类似于useContextSelector代替useContext来尽量避免不必要re-render,这方面在Redux中使用还是比较多。...此外,虽然我们可以直接使用Context与Reducer来完成基本状态管理,我们依然也有着必须使用redux理由: redux拥有useSelector这个Hooks来精确定位组件中状态变量,来实现按需更新...redux拥有丰富中间件,例如使用redux-thunk来进行异步操作,redux-toolkit官方工具集等。

93410

我是这样在 React 中实践 TDD 编程

如果你使用了Redux,它可能看起来更加复杂。 然而,在添加功能之前编写测试有助于编写更好代码,因为你预先考虑了将使用设计模式、体系结构和变量名称。 我们正在构建一个用户管理仪表板。...thunk是一个函数,它以storedispatch方法作为参数,然后在API或副作用完成后使用它来dispatch同步操作。 首先,让我们为这个特性编写测试。...让我们为创建用户特性添加thunkreducer。...我们刚刚使用Redux、thunk和axios mock编写了一些测试 对你来说有点挑战吗?添加诸如删除用户、修改以及检索用户等功能。 结论 在本文中,我们快速介绍了使用ReduxTDD。...如果你希望使用TDD编写React组件,你可以查看我写这篇文章。

1.9K30

应用connected-react-router和redux-thunk打通react路由孤立

redux 提供combineReducers辅助函数,将分散 reducer 合并成一个最终 reducer 函数,然后在 createStore 时候使用。...包裹 root reducer 并且提供我们创建history对象,获得新 root reducer 使用routerMiddleware(history)实现使用 dispatch history...actions,这样就可以使用push('/path/to/somewhere')去改变路由(这里 push 是来自 connected-react-router ) history.js import...引入 redux-thunk 很简单,只需要在创建 store 时候使用applyMiddleware(thunk)引入即可。..., routerMiddleware(history))) ); 关于怎么使用体系结构扩展,请参考以下集合链接和博客文章 结尾 Store 跟 Router 必須使用同一个 history 物件,否則会有其中一方不能正常工作

2.3K00

2022社招React面试题 附答案

(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga.../reducer'; import thunk from 'redux-thunk' // 设置调试工具 const composeEnhancers = window....如果一个 model 变化会引起另一个 model 变化,那么当 view 变化时,就可能引起对应 model 以及另一个model 变化,依次地,可能会引起另一个 view 变化。...当系统变得错综复杂时候,想重现问题或者添加新功能就会变得举步维艰。 如果这还不够糟糕,考虑一些来自前端开发领域新需求,如更新调优、服务端渲染、路由跳转前请求数据等等。...这里复杂性很大程度上来自于:我们总是将两个难以理清概念混淆在一起:变化和异步。 可以称它们为曼妥思和可乐。如果把二者分开,能做很好,但混到一起,就变得一团糟。

2K50

2021高频前端面试题汇总之React篇

(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga.../reducer'; import thunk from 'redux-thunk' // 设置调试工具 const composeEnhancers = window....如果一个 model 变化会引起另一个 model 变化,那么当 view 变化时,就可能引起对应 model 以及另一个model 变化,依次地,可能会引起另一个 view 变化。...当系统变得错综复杂时候,想重现问题或者添加新功能就会变得举步维艰。 如果这还不够糟糕,考虑一些来自前端开发领域新需求,如更新调优、服务端渲染、路由跳转前请求数据等等。...这里复杂性很大程度上来自于:我们总是将两个难以理清概念混淆在一起:变化和异步。 可以称它们为曼妥思和可乐。如果把二者分开,能做很好,但混到一起,就变得一团糟。

2K00

react+redux+webpack教程3

目前来看我们action是同步,怎么能让它异步呢? 也就是我发起一个action,给个回调机会,让它过一会儿能发起另一个action。 朴素action是没有这个能力。...如果是异步,action就不会立刻送到reducer那里,那就需要两个action,一个action是通知异步开始执行, 另一个action是我们熟悉reducer所需要action。...thunk中间件虽然非常简单,但它让redux具有了在action里面派发action能力,这样我们action就不仅仅是指导reducer如何处理状态, 而可以做一切不纯粹处理数据事情。...在action里,我们只需要把所有有用数据都传给reducer,嗯,名字也最好改个合适。 除此之外,关键字也要保存到状态里,以供翻页时使用。...改动就比较大了,对于同一个“RECEIVE_NEWS_LIST”动作,好几个状态都要进行修改。

1K100

听说redux很简单

工作流程 什么情况下需要使用 redux 总体原则: 能不用就不用, 如果不用比较吃力才考虑使用 某个组件状态,需要共享 某个状态需要在任何地方都可以拿到 一个组件需要改变全局状态 一个组件需要改变另一个组件状态...: import {createStore, applyMiddleware} from 'redux' import thunk from 'redux-thunk' // redux 异步中间件...返回一个新状态 b. 不要修改原来状态 store 将 state,action 与 reducer 联系在一起对象 如何得到此对象?...只负责 UI 呈现,不带有任何业务逻辑 b. 通过 props 接收数据(一般数据和函数) c. 不使用任何 Redux API d....负责管理数据和业务逻辑,不负责 UI 呈现 b. 使用 Redux API c. 一般保存在 containers 文件夹下

19250

从应用到源码-深入浅出Redux

bindActionCreators 基础概念 通常我们在使用 React 过程中会遇到这么一种情况,父组件中需要将 action creator 往下传递下到另一个组件上。...组件内部订阅 store.state 改变,之后在进行 rerender 看上去都是那么一自然。 可是,假使我们需要在 store 中处理派发一些异步 Action 又该怎么办呢?...上边我们按照步骤实现了一个简单 Redux-Thunk 中间件,它支持我们传入 action 类型为一个函数。此时我们就可以在 Redux 中完美的使用异步 Action 。...上边代码,我们使用了 Redux 提供 applyMiddleware API 来使用 Thunk 中间件。...此时在 composeFn 内部对于 [logger,thunk,promise] 使用 for 循环进行了逆序调用。

1.3K10
领券