I am currently trying to incorporate a popup modal function which I have managed to do and works however, I am trying to now create that same function inside a useEffect hook so that it does not re-render every time. So far, I have tried several methods and nothing seems to work. Here is my code:
AppContent.jsx (without useEffect):
import React, { useState, useEffect } from 'react'
import { X } from 'lucide-react'
import { AnimatePresence } from 'framer-motion';
import AppForm from './AppForm';
const AppContent = () => {
const [ applicationOpen, setApplicationOpen ] = useState(false);
const close = () => setApplicationOpen(false);
const open = () => setApplicationOpen(true);
return (
<>
<button
className='apply-btn'
onClick={() => applicationOpen ? close() : open()}
>
APPLY HERE
</button>
<AnimatePresence>
{applicationOpen && <AppForm applicationOpen={applicationOpen} handleClose={close}/>}
</AnimatePresence>
</>
)
}
export default AppContent
The code above works just fine.
AppContent.jsx (with useEffect):
import React, { useState, useEffect } from 'react'
import { X } from 'lucide-react'
import { AnimatePresence } from 'framer-motion';
import AppForm from './AppForm';
const AppContent = () => {
const [ applicationOpen, setApplicationOpen ] = useState(false);
useEffect(() => {
const close = () => setApplicationOpen(false);
const open = () => setApplicationOpen(true);
close();
open();
},[]);
return (
<>
<button
className='apply-btn'
onClick={() => applicationOpen ? close() : open()}
>
APPLY HERE
</button>
<AnimatePresence>
{applicationOpen && <AppForm applicationOpen={applicationOpen} handleClose={close}/>}
</AnimatePresence>
</>
)
}
export default AppContent
Can someone help me please and point out what I am doing wrong? Thank you.