这个问题之前已经有人问过了,但是我没有找到任何合适的答案,只是不知道我是否遗漏了什么,或者说目前确实不可能做到。
具体来说,hooks & redux-saga (或任何其他中间件)之间有2个主要区别。
那么,是否有可能在这两种方法之间 "搭桥",或者我应该简单地选择最适合每个特定情况的技术?
它们是解决不同问题的不同工具。Hooks在内部工作于一个功能组件的状态和生命周期。Redux在内部工作于整个react应用的状态和生命周期。Sagas帮助处理异步效果,比如外部数据获取。
一般来说,你要尽可能地限制变量和逻辑的范围。如果一个特定的 "状态 "是 只是 与单个组件相关,那么就把它保存在组件状态下。但如果几个组件或应用程序本身需要它,那么就把它存储在应用程序状态中。异步调用也是一样。如果一个外部调用只被一个组件使用,就把它保存在那里,但如果多个组件可以进行相同的外部异步调用,那么就让sagas来处理它们。
你可以自由地在每个组件中使用其中任何一种必要的东西来解决你的问题。
useReducer
钩子,你可以在动作派发时触发代码,使用 useEffect
你可以在mountupdateunmount等情况下触发代码。App
组成部分,它不是 某个随机成分,它是正确的地方把逻辑。我最近还发现一个简单的库 https:/www.npmjs.compackageuse-saga-reducer 将传奇故事引入React的 useReducer
. (我仍然不确定这是不是一个好主意--只是因为你可以并不意味着你应该这样做,对我来说,钩子异步函数通常已经足够了,但它至少是有趣的)