If you have any query feel free to chat us!
Happy Coding! Happy Learning!
In "React Advanced - Class 4," we'll continue exploring more advanced React concepts and build on what we learned in the previous classes. We'll cover topics such as React suspense, lazy loading images, and advanced patterns like compound components and render props.
Step 1: React Suspense
React Suspense is a feature that allows you to handle loading states for lazy-loaded components and data fetching. It's useful for improving the user experience by showing fallback content while waiting for data or code to load.
jsxCopy code
import React, { Suspense } from 'react'; import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; const Home = React.lazy(() => import('./Home')); const About = React.lazy(() => import('./About')); const Products = React.lazy(() => import('./Products')); function App() { return ( <Router> <div> <h1>Hello, React!</h1> <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/products">Products</Link> </li> </ul> </nav> <Suspense fallback={<div>Loading...</div>}> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/products" component={Products} /> </Suspense> </div> </Router> ); } export default App;
In this example, we use
React.lazy
to lazily load theHome
,About
, andProducts
components and wrap them with aSuspense
component. Thefallback
prop ofSuspense
specifies the content to display while waiting for the lazy-loaded components to load.Step 2: Lazy Loading Images
Lazy loading images can improve performance by loading images only when they are about to become visible in the viewport.
jsxCopy code
import React, { useRef, useEffect, useState } from 'react'; const LazyImage = ({ src, alt }) => { const imgRef = useRef(null); const [isVisible, setIsVisible] = useState(false); const handleObserver = (entries) => { const [entry] = entries; setIsVisible(entry.isIntersecting); }; useEffect(() => { const observer = new IntersectionObserver(handleObserver, { root: null, rootMargin: '0px', threshold: 0.1, // Adjust the threshold as needed }); if (imgRef.current) { observer.observe(imgRef.current); } return () => { if (imgRef.current) { observer.unobserve(imgRef.current); } }; }, []); return ( <img ref={imgRef} src={isVisible ? src : ''} alt={alt} style={{ display: isVisible ? 'block' : 'none' }} /> ); }; export default LazyImage;
In this example, we use the
IntersectionObserver
API to determine if the image is visible in the viewport. TheisVisible
state determines whether the image should be displayed or not.Step 3: Compound Components
Compound components are a pattern in React that allows you to create components with multiple child components while still maintaining a shared state.
jsxCopy code
import React, { createContext, useState, useContext } from 'react'; const ToggleContext = createContext(); const Toggle = ({ children }) => { const [on, setOn] = useState(false); const toggle = () => { setOn((prevState) => !prevState); }; return ( <ToggleContext.Provider value={{ on, toggle }}> {children} </ToggleContext.Provider> ); }; const On = ({ children }) => { const { on } = useContext(ToggleContext); return on ? children : null; }; const Off = ({ children }) => { const { on } = useContext(ToggleContext); return on ? null : children; }; const Button = () => { const { on, toggle } = useContext(ToggleContext); return <button onClick={toggle}>{on ? 'ON' : 'OFF'}</button>; }; const App = () => { return ( <Toggle> <div> <h1>Compound Components</h1> <On> <h2>The button is ON</h2> </On> <Off> <h2>The button is OFF</h2> </Off> <Button /> </div> </Toggle> ); }; export default App;
In this example, we create a
Toggle
component that manages the state of the on/off toggle. TheOn
,Off
, andButton
components are rendered within theToggleContext.Provider
and can access and modify the state of theToggle
component.Step 4: Render Props
Render props is another pattern in React that allows you to pass a function as a prop to a component. This function returns the content that the component should render.
jsxCopy code
import React, { useState } from 'react'; const Toggle = ({ render }) => { const [on, setOn] = useState(false); const toggle = () => { setOn((prevState) => !prevState); }; return render({ on, toggle }); }; const App = () => { return ( <div> <h1>Render Props</h1> <Toggle render={({ on, toggle }) => ( <div> {on ? <h2>The button is ON</h2> : <h2>The button is OFF</h2>} <button onClick={toggle}>{on ? 'ON' : 'OFF'}</button> </div> )} /> </div> ); }; export default App;
In this example, the
Toggle
component receives arender
prop that takes a function. Theon
andtoggle
values are passed as arguments to this function, which returns the content to be rendered.Congratulations! You've completed the fourth class of React Advanced. You've learned about React Suspense, lazy loading images, and advanced patterns like compound components and render props.
React offers a wide range of tools and patterns to build highly dynamic and optimized applications. As you continue your React journey, you can explore more advanced topics like server-side rendering (SSR), integrating with state management libraries like Redux or MobX, and using custom hooks to extract reusable logic.
Keep practicing, building more complex applications, and exploring the vast possibilities of React! Happy coding!
Comments: 24
Kindly check the lecture number 6. Lifecycle of a Change in 1. Git and Github The above lecture is not related to the course please update it ASAP Thank you
From where can I download the files which love babbar says he has uploaded on dashboard ??
I have attached the link https://github.com/lakshayk12/ANN_optimization_BTP
bro, i paid for the course, but still can't access the course. do something
Paid for the course but it still locked, can solve this problem please, when you take the payment the couse should be unlocked, evey time i have to message for any purchase
Now your Paypal payment is accepted and your course is activated successfully. Please leave your valuable feedback.
Why i am being asked for payment if i am already enrolled in the course
Dear anand, your payment is now updated check your course, apologize for several delays. Please leave your valuable feedback.
thanks its working now
hello ,I have a doubt
hello i have a doubt
hi
I'm paying through my Card, but it giving an error. why ? how we can purchase a course in Pakistan. Paypal is banned here
can we download the videos
i done my payment for mern stack development love babbar but cant acces to course kindly give me access
Dear Krishnapal your payment is already accepted go and check back.
Why i am being asked for payment if i am already enrolled in the course
Dear Shivansh, if you already done your payment then contact us on our official Email id [email protected] or reply here.
Why i am being asked for payment if i am already enrolled in the course
Dear p8354046, if you already done your payment then contact us on our official Email id [email protected] or reply here.
Why i am being asked for payment if i am already enrolled in the course
Dear, Don't worry now your problem is solved check your id.
Why i am being asked for payment if i am already enrolled in the course
Yes bro
I'm facing same issue
Dear, Don't worry now your problem is solved check your id.
i want debit card option
how can i assure that this is not scam?
i have same doubt is this website real or a fraud
No its not any fraud. its genuine if you need any proof please contact us via email.
No it's not any scam, its genuine if you need any proof please contact us via email.
how to do payment ?
Click on Watch now button then click next video then payment option is showing
i am unable to access the video even i have already completed my payment .
Your problem is solved
plz add codes lecture wise ! it wold be great and helpful also
now we have added starter package in lecture 2nd, go now and download it.
how to view this one
Why video not play
Now it's working.
Thank you for the access of the videos. It would be greatful if I could no the way to download the videos
Use idm to download
ok
Hello bro can you share course with me?
hello everyone