Redux 可以做什么,或者在RTK查询不能做什么?我知道RTQ查询可以更容易地用较少的代码执行数据获取和缓存,但是为什么有些以Node.js和MongoDB为后端的项目使用Redux中的Node.js而不是RTQ查询中的createApi()?
发布于 2022-05-16 08:38:49
它们是完全不同的。
RTK查询是Redux包中包含的可选插件。还有一些可供选择的包,如反应-查询、swr,参见比较@ React查询与SWR vs阿波罗对RTK查询与React路由器。我认为RTK查询概述文档已经足够清晰了。
为什么人们(包括我)在他们的项目中使用createAsyncThunk()可能是因为RTK查询有学习成本,他们希望保持项目简单,而不想包含太多的包和概念。
我编写有关数据获取和缓存的逻辑,而不是RTK查询。
RTK提供了一些API来帮助人们解决关于Redux的三个常见问题:
特别是,RTK不充分地使用二聚体,这大大降低了更新复杂状态和返回新引用的复杂性。
发布于 2022-09-25 04:39:33
在内部,createApi将调用Redux API来生成一个片减法器和相应的动作创建者,并具有适当的缓存获取数据的逻辑。它还自动生成自定义Redux中间件,用于管理订阅计数和缓存生存期。
使用createApi,我们创建了一个api,并从该api中获取钩子。大多数情况下,应用程序与一台服务器对话,因此将所有获取逻辑保持在一个函数中将保持应用程序的整洁。所有的端点都在一个地方,所以你可以在一个角度看到所有的东西。(将其与node.js api逻辑进行比较,在不同的文件中创建控制器,跟踪api请求有多难)这些获取器之间的通信(自动重取、无效缓存)是在createApi下完成的。
使用react工具包查询,我们不仅可以处理状态管理,还可以高效地处理数据获取和缓存。如果单个页面上的两个组件对RTK查询中定义的同一个端点进行网络调用,则会检测到这一点,并进行一个单独的调用。另一方面,Redux工具包与redux是相同的,但唯一的区别是redux工具包(在场景后面使用immer.js )使得它编写相同的逻辑更短、更安全。
基本上,react工具包查询构建在redux工具包之上。该逻辑首先定义数据获取,然后根据这些数据获取函数生成所有的片逻辑、还原器、中间件、isLoading状态。
比较@ React查询与SWR vs阿波罗对RTK查询与React路由器
此链接将显示RTK Query的所有属性。
https://stackoverflow.com/questions/72245081
复制相似问题