DEV Community

Cover image for My 2 cents on react & next
Tejas Bhadane
Tejas Bhadane

Posted on

My 2 cents on react & next

Why I’m Diving into React and Next.js: A Fresh Start

I’ve recently embarked on a new learning journey with React and Next.js, and here’s why I’m excited about these tools:

React: The Why

Component-Based Magic

React’s component-based architecture has been a game-changer for me. Instead of managing tangled code, I’m now creating reusable, self-contained components. For example, a simple Button component looks like this:

// Button.js
import React from 'react';

const Button = ({ onClick, children }) => (
  <button onClick={onClick}>{children}</button>
);

export default Button;
Enter fullscreen mode Exit fullscreen mode

This modular approach not only streamlines development but also keeps my projects more organized.

Declarative and Clear

React’s declarative syntax is a breath of fresh air. It lets me describe what the UI should look like based on the application’s state, leading to cleaner and more predictable code. Here’s a simple Counter component:

// Counter.js
import React, { useState } from 'react';

const Counter = () => {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};

export default Counter;
Enter fullscreen mode Exit fullscreen mode

Awesome Ecosystem

The React ecosystem is rich with tools and libraries. For routing, React Router simplifies navigation:

// App.js
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Home from './Home';
import About from './About';

const App = () => (
  <Router>
    <Switch>
      <Route path="/" exact component={Home} />
      <Route path="/about" component={About} />
    </Switch>
  </Router>
);

export default App;
Enter fullscreen mode Exit fullscreen mode

Performance Boost

React’s virtual DOM efficiently updates the UI. Here’s a simple component that showcases React’s performance optimizations:

// UserProfile.js
import React from 'react';

const UserProfile = ({ user }) => (
  <div>
    <h1>{user.name}</h1>
    <p>{user.email}</p>
  </div>
);

export default UserProfile;
Enter fullscreen mode Exit fullscreen mode

Next.js: The Bonus

Built-In Features

Next.js extends React with built-in features like server-side rendering and static site generation. Here’s a basic page setup:

// pages/index.js
import React from 'react';

const HomePage = () => (
  <div>
    <h1>Welcome to Next.js!</h1>
  </div>
);

export default HomePage;
Enter fullscreen mode Exit fullscreen mode

File-Based Routing

Next.js uses a file-based routing system, where the structure of the pages directory determines the routes. For example:

pages/index.js maps to /
pages/about.js maps to /about
For dynamic routes, create files with square brackets. For instance, pages/users/[id].js handles URLs like /users/123:

// pages/users/[id].js
import { useRouter } from 'next/router';

const UserProfile = () => {
  const router = useRouter();
  const { id } = router.query;

  return (
    <div>
      <h1>User Profile for User ID: {id}</h1>
    </div>
  );
};

export default UserProfile;
Enter fullscreen mode Exit fullscreen mode

Optimized Performance

Next.js includes performance optimizations like automatic code splitting and optimized image loading. Here’s how you can use the next/image component:

// pages/index.js
import Image from 'next/image';

const HomePage = () => (
  <div>
    <h1>Next.js Image Optimization</h1>
    <Image src="/my-image.jpg" alt="My Image" width={500} height={300} />
  </div>
);

export default HomePage;
Enter fullscreen mode Exit fullscreen mode

In a Nutshell

React’s component-based approach and declarative syntax, combined with Next.js’s powerful features and intuitive file-based routing, make for an exciting development experience. I’m thrilled to explore more and see where this journey with React and Next.js takes me!

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay