因此,挂钩可从React 16.8获得.从他们的文档来看,钩子是功能组件中状态的替代品.基本的钩子是:useStateuseEffectuseContext,但也有一些额外的钩子,其中一个是useReducer,看起来它使用了与Redux相同的action-dispatch体系 struct .

问题是,它是否会因为相似性而取代Redux?

它更适合特定的项目吗?

它放在哪里?

推荐答案

Redux是一个以特定方式鼓励数据流的库.

另一方面,react-redux实现了React-friendly方法,并提供了大量中间件和包装器,因此图书馆用户不必自行设置整个流程.

虽然useReducer是Redux工作原理的一部分,但它并不是Redux的全部.为了在组件中使用分派和状态,您仍然需要将useContextuseReducer组合使用,这就像重新发明轮子一样.

除此之外,useReducer只提供了一个dispatch方法,您可以使用它将普通的旧对象作为动作分派.目前还没有办法再增加middlewares个,比如thunk个、saga个以及更多.

您也可以使用useReducer在应用程序中使用多个减缩器,但组合这些减缩器以形成单个存储区的方法仍然必须由开发人员管理.

当状态逻辑复杂时,React docs还表示useReduceruseState的替代品

当你有复杂的问题时,useReducer通常比useState更可取

useContextuseReducer这样的钩子所做的是,它们消除了小型应用程序对Redux的依赖.

Reactjs相关问答推荐

InfiniteScroll持续获取数据,直到超过最大更新深度

从`redux—thunk`导入thunk `在stackblitz中不起作用

如何在与AntD的react 中限制文件上传和显示消息?

禁止直接访问Next.js中的页面,同时允许从应用程序内部访问

GoLang有条件地为.js.gz提供服务(如果它存在),否则为.js

更改滑块标记的文本 colored颜色 ./Reaction/MUI 5

自定义变量默认、聚焦和填充时所需TextField中标签的星号 colored颜色

Javascript - 正则表达式不适用于 MAC OS - 编码?

如何使用 App Router 和服务器组件在 Next.js 13 中实现分页

无法使用 MongoDB Atlas 和 Next.js 删除正确的帖子

获取更多数据后更新 DOM,而不刷新 React.js 中的页面

在添加了useplacesautocomplete后,在构建React/Next.js项目时,NPM抛出类型期望的错误

React - 如何重定向页面以显示数据修改?

React 应用程序可以嵌入到 PowerPoint 中吗?

从其他组件切换 FieldSet

如何使图标适合 react-bootstrap 中的行元素

如何解决在 react.js 中找不到模块错误

如何使用 React Router 在 React 中正确同步 useEffect 和 useLocation 挂钩?

组件焦点上的 MUI 更改栏 colored颜色

为什么 React 会多次调用我的应用程序的某些函数?