【发布时间】:2020-09-25 13:22:01
【问题描述】:
我想了解this (mostly very helpful) article,它描述了如何使用 react 的上下文 API 来管理应用程序级状态。对于一个简单的应用程序(在本例中是一个基本的计数器应用程序),它使用以下解决方案:
const CountContext = React.createContext()
function CountProvider(props) {
const [count, setCount] = React.useState(0)
const value = React.useMemo(() => [count, setCount], [count])
return <CountContext.Provider value={value} {...props} />
}
提供上下文,然后是下面的钩子,它可以在组件树的某个地方使用:
function useCount() {
const context = React.useContext(CountContext)
if (!context) {
throw new Error(`useCount must be used within a CountProvider`)
}
return context
}
我的问题:
我很难理解为什么这里需要useMemo 挂钩。这里没有涉及特别繁重的计算,所以我不确定我们为什么要记住这些值。如果上下文提供程序如下所示,这不是同样有效吗:
function CountProvider(props) {
const [count, setCount] = React.useState(0)
return <CountContext.Provider value={value} {...props} />
}
我觉得我可能缺少一些东西!
【问题讨论】:
-
顺便说一句,我会从你的依赖数组中删除
setCount,因为 React 保证这个函数永远不会更新。
标签: reactjs react-hooks state