I have few Checkboxes in component of React application, but whenever I'm checking they are not working as they should work!
Whenever I click on any Checkbox from ColumnCheckBoxes Component it is getting appended in selectedColumns but selectedColumns are not displayed using DuplicateCheckBoxes component.
selectedColumn & duplicateColumn are states which is in useEffect so as soon as they change whole page needs to get re-rendered.
In backend I want to pass list of selectedColumn as well duplicateColumn(unique property will be applied to column while inserting data into SQL)
App.js
import { useEffect, useState } from 'react';
import ColumnCheckBoxes from './Components/CheckBoxes/ColumnCheckBoxes';
import DuplicateCheckBoxes from './Components/CheckBoxes/DuplicateCheckBoxes';
const App = () => {
  const [columns,setColumns]=useState([]);
  const [selectedColumn,setSelectedColumn] = useState([]);
  const [duplicateColumn, setDuplicateColumn]=useState([]);
  // componentDidMount
  useEffect(() => {
    console.log('Initial Rendering!');
    setColumns(['A','B','C','D']);
  },[]);
  // componentDidUpdate
  useEffect(() => {
    console.log('Selected Column',selectedColumn);
    console.log('Duplicate Columns',duplicateColumn);
  },[selectedColumn,duplicateColumn]);
  return (
    <div className='flex-col justify-center align-middle'>
      <div><ColumnCheckBoxes columns={columns} selectedColumn={selectedColumn} setSelectedColumn={setSelectedColumn}/></div>
      <div><DuplicateCheckBoxes selectedColumn={selectedColumn} duplicateColumn={duplicateColumn} setDuplicateColumn={setDuplicateColumn}/></div>
    </div>
  );
}
export default App;
ColumnCheckBoxes
import React from 'react'
const ColumnCheckBoxes = ({columns, selectedColumn, setSelectedColumn}) => {
    const handleChange = (event,header) => {
        event.preventDefault();
        if(!(event.target.checked)) return;
        const localarr = selectedColumn;
        localarr.push(header.header);
        setSelectedColumn(localarr);
    }
  return (
    <div className='flex flex-col justify-center align-middle'>
        <h1>Columns :</h1>
        {columns.map ((header) => {
            return <div key={0} className='flex'>
                <label className='ml-2'>{header}</label>
                <input type='checkbox' className='ml-2' 
                    checked={header.header in selectedColumn?true:false} 
                    onChange={(e) => handleChange(e,{header})}
                />
            </div>
        })}
    </div>
  )
}
export default ColumnCheckBoxes;
DuplicateCheckBoxes
import React from 'react';
const DuplicateCheckBoxes = ({selectedColumn, duplicateColumn, setDuplicateColumn}) => {
    const handleChange = (event,header) => {
        event.preventDefault();
        if(!(event.target.checked)) return;
        const localarr = duplicateColumn;
        localarr.push(header.header);
        setDuplicateColumn(localarr);
    }
  return (
        <div className='flex flex-col justify-center align-middle'>
            {selectedColumn.length === 0 ? <div></div> : <h1>Remove Duplicate Elements From Column</h1>}
            {selectedColumn.map ((header) => {
                return <div key={0} className='flex'>
                    <label>{header}</label>
                    <input type='checkbox' className='ml-2' onChange={(e) => handleChange(e,{header})}/>
                </div>
            })}
        </div>
  )
}
export default DuplicateCheckBoxes;