因此,挂钩可从React 16.8获得.从他们的文档来看,钩子是功能组件中状态的替代品.基本的钩子是:useState
、useEffect
、useContext
,但也有一些额外的钩子,其中一个是useReducer
,看起来它使用了与Redux相同的action-dispatch
体系 struct .
问题是,它是否会因为相似性而取代Redux?
它更适合特定的项目吗?
它放在哪里?
因此,挂钩可从React 16.8获得.从他们的文档来看,钩子是功能组件中状态的替代品.基本的钩子是:useState
、useEffect
、useContext
,但也有一些额外的钩子,其中一个是useReducer
,看起来它使用了与Redux相同的action-dispatch
体系 struct .
问题是,它是否会因为相似性而取代Redux?
它更适合特定的项目吗?
它放在哪里?
Redux是一个以特定方式鼓励数据流的库.
另一方面,react-redux
实现了React-friendly方法,并提供了大量中间件和包装器,因此图书馆用户不必自行设置整个流程.
虽然useReducer
是Redux工作原理的一部分,但它并不是Redux的全部.为了在组件中使用分派和状态,您仍然需要将useContext
和useReducer
组合使用,这就像重新发明轮子一样.
除此之外,useReducer
只提供了一个dispatch
方法,您可以使用它将普通的旧对象作为动作分派.目前还没有办法再增加middlewares
个,比如thunk
个、saga
个以及更多.
您也可以使用useReducer
在应用程序中使用多个减缩器,但组合这些减缩器以形成单个存储区的方法仍然必须由开发人员管理.
当状态逻辑复杂时,React docs还表示useReducer
是useState
的替代品
当你有复杂的问题时,
useReducer
通常比useState
更可取
像useContext
、useReducer
这样的钩子所做的是,它们消除了小型应用程序对Redux
的依赖.