How I Write Clean Code in React

Sdílet
Vložit
  • čas přidán 27. 07. 2024
  • Check Out Brilliant → brilliant.org/CosdenSolutions
    🚀 Project React → cosden.solutions/project-react
    Join The Discord! → discord.cosden.solutions
    VSCode Theme | Font → Material Theme Darker | Menlo, Monaco "monospace"
    In this video I will show you how I write clean code in React. I will show you my mindset, how I approach a problem, and how I break it down into multiple small parts to make it manageable and scalable. Through this video you will learn how to write better React code yourself, and become a better React developer!

Komentáře • 69

  • @shoaib_akhtar_1729
    @shoaib_akhtar_1729 Před 6 dny

    Thanks for explaining the importance of achieving modularity in our code.

  • @johndevnoza4223
    @johndevnoza4223 Před 2 měsíci +6

    as a begginer one, im doing this by habbit and i was scared if it was overkill or not. now i feel happy!

  • @mulengachitalima7695
    @mulengachitalima7695 Před 2 měsíci

    Awesome video.. Really appreciate how you always adhere to SOLID principles in your videos

  • @sachityadav4141
    @sachityadav4141 Před 2 měsíci

    This was Needed 😀 ThankYou, i was having anxiety seeing lots of styling classes in return of every component

  • @user-be3ri8gf1p
    @user-be3ri8gf1p Před 2 měsíci

    Perfect timing, just wanted to learn about those :D

  • @dr_jacko
    @dr_jacko Před 2 měsíci +8

    This is a good start, but in general I would prefer to abstract fetch away a step further than hooks or components and you also need to handle loading and error states with your async calls.
    As an example, create a UserProfileRepository and UserProfileService classes which have functions for CRUD on UserProfiles. Use the singleton pattern on these classes and keep them in a context where it is required in the app.

    • @vladanisov1689
      @vladanisov1689 Před 2 měsíci

      definitely the best approach for this kind of scenario!

  • @gherardivictor
    @gherardivictor Před 2 měsíci

    Good quality and valuable content, thanks

  • @sontranvan5348
    @sontranvan5348 Před 2 měsíci

    Simple, effective tips that are easy to learn and apply. Thank you for sharing your knowledge!!!!

  • @MohamedRabi
    @MohamedRabi Před 2 měsíci

    Thank you for the fantastic content!

  • @sathirabandara7981
    @sathirabandara7981 Před 2 měsíci

    great video. its very useful. 🤩

  • @edward-vonschondorf-dev
    @edward-vonschondorf-dev Před 2 měsíci +1

    Great video Cosden! It's definitely something I've been looking into lately cause I don't like long complex components that I have to edit/create. I was just curious about something though, i noticed in your imports you have an @ symbol at the beginning and was wondering how that was setup and if there is an advantage to it? Thanks!

    • @cosdensolutions
      @cosdensolutions  Před 2 měsíci +1

      it's import aliases, the advantage is it makes things cleaner, and if you move things you don't have to always have everything be rewritten

  • @carloseduardomagalhaespere5112

    Thank you for another great video! I've been learning a lot here!
    One question: Why do you prefer to use type instead of interface in the props definition? 🤔

  • @hooooman.
    @hooooman. Před 2 měsíci +1

    A beginner here, this approach definitely makes our code more clean. but my doubt is, say if we are building a little advanced/complex project, the same approach makes too many folders and files ?

  • @tunde6159
    @tunde6159 Před 2 měsíci

    Such good tutorials.

  • @bruce_k3lly
    @bruce_k3lly Před 2 měsíci

    Thank you for this amazing video it's really helpful and it has increased my productivity, but can I use utils folder, as you said and just add reusable function for similar work ?

  • @fanespratama
    @fanespratama Před 2 měsíci

    Take a note that when you use the custom hook with useEffect in more than one file, the useEffect will run more than once, so keep one custom hook for every layout/component (let say one for user list, one for user details). If not, just move the useEffect outside the custom hook

  • @devquen37
    @devquen37 Před měsícem

    PageLayout -> ProfilePage -> ProfileData -> Children Components (Avatar, PostList, etc)

  • @SahilPatel-kh2rt
    @SahilPatel-kh2rt Před 2 měsíci

    Hey, which vs code theme you are using.? Excited to use it for my self also.

  • @JericAdriano-yo9pv
    @JericAdriano-yo9pv Před 2 měsíci

    How about modals or dialogs that are used in one page? Do we handle them all in the parent component?

  • @user-dd7kw3ym5i
    @user-dd7kw3ym5i Před 2 měsíci

    should I still separate the fetching hook if only one component uses it?

  • @techaddictdude
    @techaddictdude Před 2 měsíci

    Shouldn't the PageLayout.tsx be located in the pages folder, while the 'Profile' file should be in the in components?

  • @64revolt
    @64revolt Před 2 měsíci

    What do you think of atomic design and styled components? Only got to the page layout so far, but that seems like a perfect case for that, no?

  • @kit3x663
    @kit3x663 Před 2 měsíci

    I have one question. Why you didn't use React.FC or forwardRef in any of your videos. Is it usseles to use?

  • @mashab9129
    @mashab9129 Před 2 měsíci +1

    why not having ProfileData component call the useFetchProfile ?

  • @2positive1
    @2positive1 Před 2 měsíci

    I would move static data array upper, from the App component. It’s static, no need to recreate it on every re-render.

  • @FiguringOutWhatIsLife
    @FiguringOutWhatIsLife Před 2 měsíci

    I mean isn't the children example you gave in the first one just what we do in App.jsx though?

  • @harithsenevi4
    @harithsenevi4 Před 2 měsíci

    Can't we just use the useFetchProfile hook inside the ProfileData component itself instead of passing profileData as props from ProfilePage component? Is it a bad practice? What complications could have with that approach?

  • @ianfrye8988
    @ianfrye8988 Před 2 měsíci +3

    Great video. Only question I have: why not move the useFetchProfile inside the ProfileData page instead of passing it as a prop?

    • @ExileEditing
      @ExileEditing Před 2 měsíci +1

      I struggle with choosing between fetching on the page and passing down or fetching in the components as well. I think it makes sense for both, but it is better if you separate concerns and fetch from the page. This way, your component only cares about rendering and doesn't deal with how it gets the data. It makes those components simpler as well and probably easier to test

    • @cosdensolutions
      @cosdensolutions  Před 2 měsíci +5

      because ProfileData is only responsible for rendering, not fetching. Also, if you want to show profileData but with different filters or page sizes, adding that inside will be a mess. The way I did it, the parent decides that and just gives it to ProfileData to take over. It's simpler

    • @ianfrye8988
      @ianfrye8988 Před 2 měsíci

      @@cosdensolutions Thanks for clarifying!

    • @sontranvan5348
      @sontranvan5348 Před 2 měsíci

      ​@@cosdensolutions but in case I need to use the data of filters or page sizes from ProfileData to refresh profiledata, should I use a callback to left it to ProfilePage or move fetching into ProfileData component?

  • @lyrical6852
    @lyrical6852 Před 2 měsíci

    Honest question, are you doing this in the real world app or in your work?

  • @QueeeeenZ
    @QueeeeenZ Před 2 měsíci

    I think you can use Nuxt and all the layout, structure will be already configured for you out of the box.

  • @delightful209
    @delightful209 Před 2 měsíci +1

    is it me or is the audio levels on this video really low. i have my headphones at 50 % and its quite low compared to other videos

  • @viophile
    @viophile Před 2 měsíci +2

    What is your view on default exports? In my opinion they should only be used in libraries, not in any other code.

    • @mahendrasinh_9106
      @mahendrasinh_9106 Před 2 měsíci

      if you export as a default then you can import it at any name
      // Exporting a component with export default
      const MyComponent = () => {
      // Component implementation
      };
      export default MyComponent;
      import MyComponent from './MyComponent';
      without export default
      // Exporting a component with named export
      export const MyComponent = () => {
      // Component implementation
      };
      // Importing the component
      import { MyComponent } from './MyComponent';
      you need to call with same name

    • @PaulSebastianM
      @PaulSebastianM Před 2 měsíci +2

      Default exports should be banned. They are not adhesive to strong typing and make tree shaking impossible especially when mixed with named export.

  • @Divyv520
    @Divyv520 Před 2 měsíci

    Hey Man , really nice video ! I was wondering if I could help you with Viral Content ideas in your niche , Script , editing , thumbnail , SEO , Growth and analysis , Leads and appointments for your business , etc in all to you ! Pls let me know what do you think ?

  • @isaacjames8735
    @isaacjames8735 Před 2 měsíci

    Make a video about Social Login system in react please

  • @meylis_so2
    @meylis_so2 Před 9 dny

    cosden how are u making sidebar in vscode and how u are controlling it please make tutorial

  • @keklamo1485
    @keklamo1485 Před 2 měsíci

    anyone know what allows him to do rjsfc and have the react component with function keyword? i just have rafc and its the arrow funciton i hate it

    • @cosdensolutions
      @cosdensolutions  Před 2 měsíci

      check out my vscode setup video

    • @nicus1504
      @nicus1504 Před 2 měsíci

      why would you use export default function instead of export const?

    • @keklamo1485
      @keklamo1485 Před 2 měsíci

      @@nicus1504 i just like using function better its personal preference

  • @programmerjowo
    @programmerjowo Před 2 měsíci

    How to handle authentication on the API

  • @RoomCorner_
    @RoomCorner_ Před 2 měsíci

    Sir i'm interest of React Project but my english isn't very well. Is there subtitle like in CZcams?

  • @FalioV
    @FalioV Před 2 měsíci +1

    Why would you use this Layout component on every page like this ? Just pass it to the index route and thats it. Overall I see this is "basic 101" and way far from Sr. react code. And I personally think this is not the best way to describe "custom hooks" as it should be. This profile code belongs to the Service layer. Don't get me wrong, I'm not here to argue, just have some questions over all. :)

  • @SingleSeeker
    @SingleSeeker Před 2 měsíci +1

    in a real project , a loading , error is also needed.

  • @Edgars82
    @Edgars82 Před 2 měsíci

    export const router = createBrowserRouter([
    {
    path: '/',
    element: (



    ),
    errorElement: ,
    children: [
    {
    index: true,
    element: ,
    },
    {
    path: 'search',
    element: (...
    this way all childrens will have layout and no need to import it as wrapper inside page components

  • @CyberSurgeon
    @CyberSurgeon Před 2 měsíci

    in your video description ,the project react lik is give me 500 web code .

  • @shakapaker
    @shakapaker Před 2 měsíci

    props with children makes children optional, for layout it needs to be required

  • @-mahmoudadel2628
    @-mahmoudadel2628 Před 2 měsíci +1

    يمزاجك يا كوزدين

  • @TheOnlyJura
    @TheOnlyJura Před 2 měsíci

    Lol react andies

  • @NikulPipariya-hg5mb
    @NikulPipariya-hg5mb Před 2 měsíci +11

    Increase your voice please... Its so low.... Thanks for zooming screen

    • @tjdgmlchl6305
      @tjdgmlchl6305 Před 2 měsíci +8

      nah I like it because he’s not yelling or doing a “youtuber voice”

    • @alaskandonut
      @alaskandonut Před 2 měsíci +4

      I’m not just being contrarian. His level are fine.

    • @adeemmmm
      @adeemmmm Před 2 měsíci +1

      His volume level is good,try to check your speaker

    • @dr_jacko
      @dr_jacko Před 2 měsíci +1

      If only there was a way to increase the volume of a video??!?

    • @Pilosofia
      @Pilosofia Před 2 měsíci +1

      throw your speakers in the trash and get new ones.