What is the best method for implementing multiple select options in ReactJS?

Hey there! I'm new to React and I'm attempting to create a multiple select option using the Axios GET method. However, I've encountered an issue with adding multiple select options in this file. I've been trying to achieve this with checkbox code below, but I keep receiving an error stating that a string is being called on the onChange function. Additionally, the checkboxes are not opening due to this error.

List item

import React, { Component, Fragment } from "react";
import axios from "axios";

class Home extends Component {
  state = {
    users: []
  };

  componentDidMount() {
    axios.get("https://jsonplaceholder.typicode.com/users").then(res => {
      console.log(res);
      this.setState({
        users: res.data
      });
    });
  }

  showCheckboxes = () => {
    let expanded = false;
    const checkboxes = document.getElementById("checkboxes");
    if (!expanded) {
      checkboxes.style.display = "block";
      expanded = true;
    } else {
      checkboxes.style.display = "none";
      expanded = false;
    }
  };

  onChangeValue = e => {
    const value = e.target.value;
    debugger;
  };

  render() {
    const { users } = this.state;

    const nameList = users.length ? (
      <select className="custom-select">
        {users.map((user, i) => {
          return (
            <option key={i} value={user.name}>
              {" "}
              {user.name}
            </option>
          );
        })}
      </select>
    ) : (
      "No Data"
    );

    const usernameList = users.length ? (
      <select className="custom-select">
        {users.map((user, i) => {
          return (
            <option key={i} value={user.username}>
              {user.username}
            </option>
          );
        })}
      </select>
    ) : (
      "No Data"
    );

    const emailList = users.length ? (
      <select className="custom-select">
        {users.map((user, i) => {
          return (
            <option key={i} value={user.email}>
              {user.email}
            </option>
          );
        })}
      </select>
    ) : (
      "No Data"
    );

    return (
      <Fragment>
        {nameList}
        <hr />
        {usernameList}
        <hr />
        {emailList}
        <hr />

        <div className="multiselect">
          <div className="selectBox">
            <select>
              <option>Select an option</option>
            </select>
            <div className="overSelect" onClick="showCheckboxes()"></div>
          </div>
          <div id="checkboxes">
            <label htmlFor="one">
              <input type="checkbox" id="one" />
              First checkbox
            </label>
            <label htmlFor="two">
              <input type="checkbox" id="two" />
              Second checkbox
            </label>
            <label htmlFor="three">
              <input type="checkbox" id="three" />
              Third checkbox
            </label>
          </div>
        </div>
      </Fragment>
    );
  }
}

export default Home; 

Answer №1

Convert the following code snippet:

<div className="overSelect" onClick="showCheckboxes()"></div>

into

<div className="overSelect" onClick={this.showCheckboxes}></div>

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Using Node JS to Retrieve Data from API through http with Callback Function

As I embark on my journey to learn Node.js, I have decided to build an app using the Express framework that will interact with the Coinbase API to fetch data regarding the price of Bitcoin. Despite making progress in querying the API and retrieving the ne ...

Angular does not allow the transfer of property values from one to another

As of late, I have delved into learning Angular but encountered an issue today. I have the following Component: import { Component, OnInit } from '@angular/core'; import { SharedService } from '../home/shared.service'; import { IData } ...

Setting up JavaScript imports in Next.js may seem tricky at first, but with

Whenever I run the command npx create-next-app, a prompt appears asking me to specify an import alias. This question includes options such as ( * / ** ) that I find confusing. My preference is to use standard ES6 import statements, like this: import Nav f ...

Customize Mask Format for KeyboardDatePicker in MaterialUI

While using the KeyboardDatePicker component from Material UI, I encountered an issue where users were unable to input letters when the format was set as dd/MMM/yyyy (for example: 26/Apr/1983). Is there a way to create a custom mask to address this limitat ...

What is the method for applying a Redux statement?

Experience with Redux toolkits: https://i.sstatic.net/cwu8U.png I've encountered an issue while working with Redux toolkits where I'm unable to access certain statements. I attempted the following code snippet, but it resulted in an error. c ...

I'm having trouble jotting down notes in the TextFields

I'm currently facing an issue when trying to add a new user to my database using the axios post method. I have created a form with Material UI, and although there are no console errors or browser issues, I am unable to input text into the TextFields. ...

Terminal displaying a running error for a NestJS CLI project

Encountered an error while running the command yarn start:dev in my WebStorm integrated terminal. Error Snapshot https://i.sstatic.net/Oug8y.png Sharing my package.json file below { "name": "test-project", "version": "0.0.1", "description": "", ...

Guide to sending an array to Jade for rendering using NodeJS and ExpressJS

Coming from a background in "functional" programming languages like PHP, Lua, and C, I am currently facing a challenging learning curve as I transition to the MVC model used in NodeJS. I've been struggling to display a simple MySQL array in Jade and ...

What should you go for - utilizing an outdated component in React, or attempting to integrate the library into React without the use of a component?

While some components I've come across are not updated to the latest React version, they still function properly. I'm curious if it's advisable or a good practice to attempt implementing these libraries in React without using npm packages? ...

Get ready to export your custom-designed Bootstrap material dashboard page!

I am currently using the free bootstrap material dashboard available at https://github.com/creativetimofficial/material-dashboard. I am looking to enhance it by adding an export button that allows me to export all content on the dashboard page, including ...

Showing scheduled activities from a database on an AngularJS mwl calendar

How can I modify my code to display events from a database on an mwl calendar based on the saved date rather than showing all events for today only? I want to show events based on the notifyDate field in the database. Can someone help me with this? html ...

The fonts have been successfully loaded on the local server, but unfortunately, they are

I am facing an issue with using custom fonts on my nextjs/tailwind project. The fonts are displaying correctly when I view the project on my local server, and even when I make a production build and run it locally. However, they do not show up when I deplo ...

Tips for updating mysql records on a web page without the need to refresh it using PHP

Consider this situation: Below is the code that shows all user accounts. <table border="3px" align="center" cellspacing="3px" cellpadding="3px"> <tr> <td>Username</td> <td>Password</td> <td><a href="" oncli ...

Preserve StepContent information within Material-ui Stepper during updates to the active step

I have a Stepper component with multiple steps, each containing several TextFields. The issue is that material-ui unmounts the step contents when you switch steps, causing all the data in the TextFields to be lost. My question is: Is there a way to prese ...

Utilize the text box feature for manipulating the data field in Angular4

Within my grid view, there exists a column labeled remark. This specific field contains various values, one of which is absence. My objective is to modify the remark value exclusively when it is equal to absence, followed by clicking the corresponding icon ...

Having trouble getting jQuery to scroll to the top of a document correctly

I am currently developing a smartphone application for iOS using jQuery. There are 2 divs in the app, one that displays a list of events and another that displays an individual event. Here is how they are structured: <div id="output"> & ...

Incorporate various WebGrids with distinct styles on a single page without repetition

Essentially, I have my code within the view and I'm trying to avoid duplicating WebGrid instances. Model Overview public class UsersWithDetailsModels { public IEnumerable<ApplicationUser> ApplicationUsers { get; set; } public IEnumerab ...

Is there a way to ensure that my slideshow images maintain their proportions when viewed on various screen sizes?

I came across a code snippet for an image slideshow that I really liked, but it didn't resize properly on different browser sizes. Initially, I attempted to use the vh property to address this issue, but unfortunately, the images wouldn't scale p ...

Having trouble loading IE with jQuery isotope

Encountering a common issue on an unfamiliar browser, many still face the challenge. Setting up an isotope grid on websites seems to function seamlessly across various browsers, except for when testing in Internet Explorer using . In this case, the layout ...

What could be causing the Google API to malfunction in my Universal Windows App?

Error: 0x800a138f - JavaScript runtime error: Unable to access 'setApiKey' property of undefined or null reference Hello, I am struggling to make this work on my Universal Windows App. There is a sample for Google's URL shortener with instr ...