How To Add Login Page Js React Redux

How To Articles

In this article, I will guide you through the process of adding a login page using JavaScript, React, and Redux. I will provide detailed steps and explanations, along with some personal touches and commentary from my own experience.

Setting up the Project

First, make sure you have Node.js and npm installed on your machine. You can check the versions by running node -v and npm -v in your terminal.

To create a new React project, open your terminal and run the following command:

npx create-react-app login-app

This will create a new directory called login-app with all the necessary files and dependencies.

Next, navigate to the project directory:

cd login-app

Now, let’s install the required packages for Redux:

npm install react-redux redux

This will install React Redux and Redux as dependencies in your project.

Creating the Login Component

Now that the project is set up, let’s create a new component for the login page. Inside the src directory, create a new file called Login.js.

Open Login.js and add the following code:

import React from 'react';
import { connect } from 'react-redux';

const Login = () => {
  return (
    <div className="login">
      <h2>Login</h2>
      <form>
        <input type="text" placeholder="Username" />
        <input type="password" placeholder="Password" />
        <button type="submit">Login</button>
      </form>
    </div>
  );
};

export default connect()(Login);

In this code, we have created a functional component called Login. The component renders a login form with two input fields for username and password, and a submit button.

We have also imported connect from the react-redux library. This allows us to connect our component to the Redux store.

Adding Redux Actions and Reducers

Now, let’s create the Redux actions and reducers to handle the login functionality.

In the src directory, create a new directory called actions. Inside the actions directory, create a new file called userActions.js.

Open userActions.js and add the following code:

export const login = (username, password) => {
  return {
    type: 'LOGIN',
    payload: {
      username,
      password
    }
  };
};

export const logout = () => {
  return {
    type: 'LOGOUT'
  };
};

In this code, we have defined two action creators: login and logout. The login action creator takes in a username and password as parameters and returns an action object with the type 'LOGIN' and the payload containing the username and password.

The logout action creator simply returns an action object with the type 'LOGOUT'.

Next, create a new directory called reducers inside the src directory. Inside the reducers directory, create a new file called userReducer.js.

Open userReducer.js and add the following code:

const initialState = {
  isLoggedIn: false,
  user: null
};

const userReducer = (state = initialState, action) => {
  switch (action.type) {
    case 'LOGIN':
      return {
        isLoggedIn: true,
        user: {
          username: action.payload.username
        }
      };
    case 'LOGOUT':
      return {
        isLoggedIn: false,
        user: null
      };
    default:
      return state;
  }
};

export default userReducer;

In this code, we have defined the initial state of the user in the Redux store. The user is initially not logged in (isLoggedIn: false) and the user property is set to null.

The userReducer function takes in the current state and an action as parameters. It then switches on the action type and updates the state accordingly.

Connecting Redux to the Login Component

Now that we have defined our actions and reducers, let’s connect Redux to the Login component.

Open Login.js and modify the code as follows:

import React from 'react';
import { connect } from 'react-redux';
import { login } from './actions/userActions';

const Login = ({ login }) => {
  const handleSubmit = (e) => {
    e.preventDefault();
    const username = e.target.username.value;
    const password = e.target.password.value;
    login(username, password);
  };

  return (
    <div className="login">
      <h2>Login</h2>
      <form onSubmit={handleSubmit}>
        <input type="text" name="username" placeholder="Username" />
        <input type="password" name="password" placeholder="Password" />
        <button type="submit">Login</button>
      </form>
    </div>
  );
};

export default connect(null, { login })(Login);

In this code, we have added a new prop to the Login component called login. We have also defined a new function called handleSubmit that gets called when the login form is submitted.

Inside the handleSubmit function, we prevent the default form submission behavior, extract the values of the username and password fields, and call the login action creator with these values.

We have also connected the login action creator to the Login component using the connect function from React Redux.

Conclusion

Adding a login page using JavaScript, React, and Redux can be a powerful way to manage user authentication in your web application. By following the steps outlined in this article, you should now have a solid understanding of how to create a login page and connect it to Redux actions and reducers.

Remember, authentication is a crucial aspect of many web applications, so it’s important to implement it securely and efficiently. Feel free to experiment and add your own personal touches to make the login page unique to your project.

Now that you have the knowledge and tools to create a login page, go ahead and start building amazing applications with user authentication!

Click here to access the specific login page.