gpt4 book ai didi

reactjs - 用于本地状态管理的 Apollo Client 3.0 或 Redux?

转载 作者:行者123 更新时间:2023-12-05 09:06:59 24 4
gpt4 key购买 nike

我正在使用 Apollo Client 3.0 从 graphql 服务器获取数据,但我无法决定使用什么进行本地状态管理(Redux 或 Apollo Client 3.0)。

我认为 Redux 迫使我编写更多代码,但以一种可预测且更简洁的方式,这很好。还将 Redux 添加到应用程序意味着我将混合使用 2 个状态管理库。

Apollo Client 3.0 有 Reactive Variables,但对于大型应用我认为它会变得一团糟!我也可以通过 @client 指令使用查询和突变,但这可能有点令人困惑。

你有什么推荐给我的?我应该使用什么?你能给我一些很好的例子吗?

谢谢!

最佳答案

Apollo 不是状态管理库。它是 graphql 的一个了不起的客户端和缓存,但是当你开始将它用作客户端状态管理时,你会注意到它并不是真正的目的。您必须编写的代码量与 vanilla redux 类似,因为您必须为每个本地查询和变更编写自己的解析器,但是由于中间有一个基于文本的协议(protocol),您失去了所有类型安全性当保持“纯 JavaScript”时。然后你必须手动将你的数据放入规范化的缓存中,即使你的数据没有规范化,所以你将开始将你的设置放入 settings/1,因为一切都需要一个 id,即使您的应用程序中只有一个设置实例。根据我的经验,这一切都感觉很笨拙。

此外,现代 redux 的样板文件比您现在可能习惯的要少得多 - 如果您按照官方建议使用 redux 工具包 (take a look at this page of the official redux docs),您将编写可能使用的代码的四分之一与“vanilla redux”一起使用。现代 redux 没有手写的 action creators、action types、switch-case reducers 或不可变逻辑。这些都是目前在幕后处理的所有实现细节。

我实际上在一年半前就这个主题做过一次 session 演讲,所以我有一些例子。

Here is what you write with Apollo (是的,该示例对于 Apollo 来说有点人为 - 但我想对所有库使用相同的示例,而登录流程正是我所追求的)

This is what it looks like in redux

关于reactjs - 用于本地状态管理的 Apollo Client 3.0 或 Redux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65463776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com