Reactjs 当我们可以只使用一个自定义钩子时,为什么要使用Provider和useContext呢?

Reactjs 当我们可以只使用一个自定义钩子时,为什么要使用Provider和useContext呢?,reactjs,Reactjs,此刻我的脑子一片空白。。。当我们可以只使用一个自定义钩子时,为什么要使用Provider和useContext呢 i、 e我有一个自定义挂钩,提供用户数据和登录/注销fn: export default function useAuth() { const [userInfo, setUserInfo] = useState(null) const [isLoggedIn, setLoggedIn] = useState(false) const logout = ()

此刻我的脑子一片空白。。。当我们可以只使用一个自定义钩子时,为什么要使用Provider和useContext呢

i、 e我有一个自定义挂钩,提供用户数据和登录/注销fn:

export default function useAuth() {
    const [userInfo, setUserInfo] = useState(null)
    const [isLoggedIn, setLoggedIn] = useState(false)

    const logout = () => {}
    const login = () => {}

    useEffect(() => {
     // do auth stuff
     // setUserInfo({...})
     // setLoggedIn(true)
    }, [])

  return { userInfo, logout, login, isLoggedIn }
}
我想我可以创建AuthProvider,然后通过组件中的useContext访问这些值

在AuthProvider中只使用useAuth()而不使用useContext有什么区别

我想最好使用第二种方法,因为useAuth()将在我调用它的每个组件上使用useEffect运行,在AuthProvider中只能运行一次useEffect,并与useContext共享检索到的状态


我很确定这会被否决,但是_(ツ)_/“

自定义钩子解决了锅炉板代码的问题。如果您的不是库,并且不打算再次恢复自定义钩子,为什么要浪费时间将其作为单独的文件或自定义钩子捆绑

如果你相信你的
useAuth()
,只使用了一次,这似乎很理想,因为身份验证只做了一次,我认为不需要定制钩子。过度工程是不好的,记住YAGNI原则