4

I have created a global context in my app and I have a wanted to show ErrorMessage and Login if they are triggered to open. So I put them in a context. The problem is that Login outputs a dependency cycle issue. I think this is because ErrorMessage is also found on Login if they entered a wrong email or password. How will I be able to fix this? I think this is because of importing useGlobalContext in Login. I'm thinking of creating a separate context for auth?

import dynamic from 'next/dynamic'
import React, { createContext, useState, useContext } from 'react'

export const GlobalContext = createContext()

export const useGlobalContext = () => {
  return useContext(GlobalContext)
}

const ErrorMessage = dynamic(
  () => import('../../../components/Modal/ErrorMessage'),
  {
    ssr: false,
  }
)

const Login = dynamic(() => import('../../../components/Login'), {
  ssr: false,
})      --------> Dependency cycle via....

export const GlobalProvider = ({ children }) => {
  const [showLogin, setShowLogin] = useState(false)
  const [showError, setShowError] = useState(false)
  const [errorMessage, setErrorMessage] = useState('')

  const toggleLogin = () => setShowLogin((prevState) => !prevState)

  return (
    <GlobalContext.Provider
      value={{
       showLogin,
       setShowLogin,
        toggleLogin,
        showError,
        setShowError,
        setErrorMessage,
        errorMessage,
      }}
    >
      {children}

      <Login toggleLogin={toggleLogin} />

      <ErrorMessage
        message={errorMessage}
        setShowModal={setShowError}
        showModal={showError}
      />
    </GlobalContext.Provider>
  )
}

Login.js

import { useGlobalContext } from '../../libs/context/globalContext'

    const LoginForm = ({ toggleLogin = () => {} }) => {
      const { setShowError, setErrorMessage } = useGlobalContext()
    
    
    }

   export default LoginForm
Joseph
  • 7,042
  • 23
  • 83
  • 181

0 Answers0