因此,React 16.8中提供了挂钩。从他们的文档来看,Hooks可以替代功能组件中的状态。基本挂钩是:useState,useEffect,useContext,但也有一些额外的钩子,其中之一是useReducer,它看起来像它使用相同action- dispatch的终极版做架构。
useState
useEffect
useContext
useReducer
action- dispatch
问题是,是否由于相似而取代Redux?
是否更适合特定项目?
哪里适合?
Redux是一个以特定方式鼓励数据流的库。
react-redux 另一方面,它实现了React友好的方法,并提供了许多中间件和包装器,因此库使用者不必自己设置整个过程。
react-redux
虽然useReducer这是Redux工作方式的一部分,但并不是全部。为了使您能够在组件中深入使用调度和状态,您仍然必须结合使用useContext,useReducer就像重新发明轮子一样。
最重要的是,useReducer为您提供了一种dispatch方法,您可以使用该方法将简单的旧对象作为操作进行分派。目前还没有办法添加middlewares到这些,例如thunk,saga等等。
dispatch
middlewares
thunk
saga
您也可以在应用程序中使用多个reducer,useReducer但是将它们组合成一个单一商店的方法仍然必须由开发人员管理。
此外,React docs声明了状态逻辑复杂时useReducer的替代方法useState
useReducer``useState当您具有包含多个子值的复杂状态逻辑或下一个状态取决于上一个值时,通常更可取。useReducer还可以让您优化触发深层更新的组件的性能,因为您可以传递调度而不是回调。
useReducer``useState
什么样钩useContext,useReducer做的是,他们消除对依赖Redux于小型的应用程序。
Redux