> For the complete documentation index, see [llms.txt](https://zg-zhang.gitbook.io/note/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zg-zhang.gitbook.io/note/shi-zhan-bi-ji/cloud-music-web-app-v1.0/react-hooks-redux.md).

# 可以使用React Hooks 替代 Redux

在组件切换的时候，当组件切换之后，组件会被卸载，对于组件内部有关的函数引用全部都会消失，作用域引用消失，闭包变量不复存在

所以使用组件内部缓存是行不通的，必须采用状态存储在组件外的方式。

全局的状态管理不仅仅可以用 Redux，React Hooks 也可以模拟出这种功能。

使用 useContext 和 useReducer 模拟出类似 redux 的状态管理功能。

> 但是，使用 Hooks 来替代 Redux 不是一个很好的方案。

虽然，Redux 有繁重的模板代码，并且引用 react-redux 会增加项目包的大小。

但是，Redux 有非常成熟的状态跟踪调试工具、非常成熟的数据模块化方案、成熟且强大的中间件功能。

客观来说，我认为 Redux 是短时间不可被替代的状态管理方案。
