当前位置: 首页 > 知识库问答 >
问题:

javascript - 最近react圈有没有打包或者状态管理的新技术?

钱繁
2024-08-29

最近react圈有没有打包或者状态管理的新技术?

写了四年react 这两年跑去写vue了。最近有几个项目,想重新捡起来react搞一下。目前社区有没有好用的cli推荐?
之前四年经验用过cra 也自己大果。最常用的是ali开源的umijs 前几年觉得很好用 今年打开官网一看 状态管理还是基于dva,dva这玩意基于redux-sagas搞的必须用yeild,这个关键字会导致丢失ts定义。

这两年一直在用vite构建,目前vite的部署生产能力已经得到验证了,所以新项目会抛弃webpack 继续使用vite。目前选型上只有状态管理没有敲定。圈内大佬有没有好的状态管理推荐?

共有1个答案

邵逸明
2024-08-29

打包技术

在React圈中,Vite 已经成为了非常受欢迎的打包工具,尤其是在新项目上。Vite是一款现代的JavaScript构建工具,旨在提供快速的开发体验,支持热更新等功能,并且不干扰React的功能层,让开发者能更专注于React本身。对于使用Vite进行React项目的开发,这是一个非常好的选择,因为它已经验证了其部署生产能力。

状态管理技术

在状态管理方面,React社区提供了多种选择,以下是一些值得推荐的库:

  1. Redux Toolkit

    • Redux Toolkit 是基于 Redux 的状态管理工具集,它集成了Redux的核心功能,并提供了一系列的工具和方法来简化Redux的使用。
    • 它特别适合大型和复杂的项目,因为它提供了可预测的状态管理,让数据流更加清晰。
    • Redux Toolkit 通过提供诸如 Action Creators、Reducers、Selectors 等工具,大大简化了Redux的使用。
  2. Zustand

    • Zustand 是一个轻量级、可定制的状态管理库,适合小型项目和偏好简单解决方案的开发者。
    • 它简化了状态管理的过程,无需复杂的设置和概念,并且提供了良好的性能和易用性。
    • Zustand 的核心理念是“全局状态,本地访问”,允许各个组件方便地访问和修改状态。
  3. React Query

    • 虽然React Query本身不直接用于状态管理,但它是一个用于数据获取和状态管理的非常有用的库。
    • 它提供了自动缓存、高效的数据获取以及自定义API端口的功能,非常适合需要实时数据更新和高效数据同步的应用程序。
  4. MobX

    • MobX 是一款简单易用的状态管理库,它采用了响应式编程的思想。
    • 使用MobX,你可以轻松地管理应用的状态,并且无需复杂的中间件和配置。
    • 当状态发生变化时,相关组件会自动更新,这使得状态管理更加简单和高效。

CLI 推荐

对于React项目的CLI,Create React App (CRA) 仍然是一个很好的起点,特别是对于新项目。然而,由于你已经提到对Vite的偏好,并且Vite已经验证了其作为构建工具的强大能力,你可以考虑使用Vite的官方CLI来创建和构建你的React项目。Vite的CLI提供了快速启动项目、开发服务器、构建生产版本等功能,非常适合现代Web开发的需求。

总结

  • 打包技术:推荐使用Vite作为你的构建工具。
  • 状态管理技术:根据你的项目需求选择合适的库,Redux Toolkit适合大型和复杂的项目,Zustand适合小型和简单的项目,React Query适合需要高效数据获取和状态管理的场景,MobX则提供了响应式编程的便利。
  • CLI:考虑使用Vite的官方CLI来创建和构建你的React项目。
 类似资料:
  • 我有这样一个流应用程序: 否:3台机器上有3名工人,并行度为16。总并行度为48。 在实现此代码时,我始终假设“如果ip地址1.2.3.4与条件匹配,则来自同一ip地址1.2.3.4的后续请求始终与条件匹配,直到状态被清除”。这句话对吗? 据我从flink docs了解,如果ip地址1.2.3.4转到机器1(通过生成clientip的哈希值),那么来自ip地址1.2.3.4的所有请求都会转到机器1

  • 这是子组件,上面这样写,弹窗打开的时候没有加载状态,是什么原因

  • 问题内容: 我觉得我已经在阳光下尝试了所有东西,但是一定缺少一些非常明显的东西。在下面,我试图将一个新项目推入数组并更新状态,但是无论我做什么,状态都不会从初始数组更改。 当我console.log newListItems时,新项目就包括在内,因此到目前为止所有工作都在进行,它是不会更新的实际状态。我想念什么? addItem方法: 我也没有在控制台中收到任何错误消息。 完整代码: 问题答案:

  • 我在UI中有一个按钮,在OnClick事件处理程序中,我必须运行一个设置间隔计时器。在设置间隔计时器中,我检查一个条件,如果条件满足,我将更新状态,但它不能正常工作。 00); 在倒计时功能中有一个console.log,它总是打印“0 false”,但UI中的组件网正在更新为正确的数字。 你能告诉我为什么吗 控制台中的计数始终为“0”。log 代码沙盒链接:https://codesandbox

  • 写rust 程序,不知道全局状态放那里,lazy_static 太难用了,难道要把sqlite 中吗

  • 我试图改变用户界面之前,用户离开应用程序(用户是在多任务视图或切换到一些其他应用程序)。更具体的是,当用户离开应用程序时,我想添加一个带有应用程序徽标的全屏视图。 这是Android上的bug吗?如果没有,我有什么选择让它在Android上工作。 谢了。