mardi 11 octobre 2022

How to create multiple input checkboxes, with a select all checkbox in function based react?

EXPLANATION

  • I have an array of objects.
  • They are being mapped and the data is being displayed on the screen.
  • I need to make it so that whenever a checkbox is clicked for a given object, that object is added to a new array. and when it is unclicked, it is removed from that array.
  • I also need a 'MAIN' checkbox that selects all items and adds them to the array when checked and removes all items when unchecked.

CODE EXPLANATION

// array of people objects

arrOfPersonObjs = [
    {id:1, name:'john, age:30,
    {id:2, name:'Lisa, age:34,
    {id:3, name:'Rob, age:30,
    {id:5, name:'Lucy, age:32,
    {id:5, name:'Tammy, age:38
    ]

// display JSX (this is psuedocode)
<input type='checkbox' className='SelectAll'/>
arrOfPersonObjs.map((curr)=>{
<input type='checkbox' className='SelectIndividualTicket/>
display curr.name
display curr.age
})
  • So as you can see, each object displayed will have a controlled checkbox associated with it.
  • There will also be a 'master' select all button.

QUESTIONS

  1. How do I set it up so that when an checkbox is checked, the input is marked as checked, and the person object that is associated with the checked checkbox is added to a new array.
  2. if an object is already in the array, and its button is checked(going from checked to no longer being checked), then the person obj is removed from the new array
  3. How do I create a selectAll checkbox that adds checked to all checkboxes when clicked... and adds them all to a new array.
  4. and if select all is already 'activated' and you click the selectAll checkbox again, all of the checkboxes and no longer marked as checked and are then removed from the new array.'

CURRENT FRUSTRATIONS

  • I havent found any up to date documentation that discusses my specific requirements
  • working with a single checkbox is relatively straightforward, but things get confusing when it comes to multiple checkboxes because I dont know how to keep track of which checkboxes have been marked as checked. and which hasn't.



Aucun commentaire:

Enregistrer un commentaire