Search code examples
javascriptreactjsarrow-functions

React Arrow Function Component - setState is not defined


I am trying to setState in an arrow function component but getting an error "setState is not defined".

I tried setting state in handleChange using setState({ selectedSlot }) and this.setState({ selectedSlot }) but nothing worked.

 const AddAssetActivity = props => {
 let { variations, slots, priceStructure } = props;

 let state = {
   selectedSlot: { "0": "00", "1": "11" },
   cal: 1
 };

 let handleChange = (event, value) => {
   let selectedSlot = state.selectedSlot;
   selectedSlot[value.variation] = value.slot;
   setState({ selectedSlot });
 };

 return (
   <div>

   </div>
 );
};

Solution

  • To implement stateful logic inside functional components use hooks:

     const AddAssetActivity = props => {
     let { variations, slots, priceStructure } = props;
    
     const [state, setState] = React.useState({
       selectedSlot: { "0": "00", "1": "11" },
       cal: 1
     })
    
    
     let handleChange = (event, value) => {
       const _state = {...state}
       let selectedSlot = _state.selectedSlot;
       selectedSlot[value.variation] = value.slot;
       setState({ ..._state, selectedSlot });
     };
    
     return (
       <div>
    
       </div>
     );
    };