我们如何在不使用Redux的情况下使用钩子来管理React应用程序的全局状态?

时间:2019-10-11 01:36:34

标签: reactjs redux react-redux react-hooks

我一直在将redux用于我的所有React项目,以维护全局应用程序状态。我读到我们也可以使用钩子来管理应用程序的全局状态,而不需要redux,但是我不知道该如何使用它。这样做的任何帮助或示例都会非常有帮助。

2 个答案:

答案 0 :(得分:1)

Hooks是一种功能编程方式,它消除了react中的类。但是,您可以查看反应上下文API 。它允许以反应方式进行全局状态管理。

请注意,Recat Context不能替代Redux。它们彼此互补,redux也使用此上下文。

const UserContext = React.createContext(null) ; //默认值

获取值后,就可以在其中存储任何对象或函数。 因此,在根或应用程序上,创建正常的全局状态。

const [user, setUser] = useState() <UserContext.Provider value={{user, setUser}}> <ComponentA /> <UserContext.Provider>

现在,在整个应用程序中全局管理用户及其使用方式。

现在您可以使用const {user, setUser} = useContext(UserContext)

调用setUser时,现在正在更新全局状态。继续阅读以了解何时使用。 https://reactjs.org/docs/context.html#before-you-use-context

答案 1 :(得分:1)

如果要将Redux替换为ReactHooks,可以按照本教程进行操作:Link

  

Do React Hooks Replace Redux?    TL; DR:钩子很棒,但不是。

自从引入React hooks API以来,关于React hooks是否将取代Redux的问题很多。

我认为ReactHooksRedux之间几乎没有重叠。钩子并没有给我们带来神奇的新状态功能。相反,它增强了API的功能,使我们可以使用React进行处理。

要了解什么是redux?什么是react hooks 为什么首先考虑使用Redux?,请访问Here