Shraddha J
Shraddha J

Reputation: 25

Add callback function to hook setState

Hooks setState is needs to update synchronously so that application works fine. In class component we can do the callback to it like, this.setState({},()=>{}), but How to do it using hooks.

Tried with async and await:

    const [profilePicValidation, setprofilePicValidation] = useState("")

    async function mimeType(headerString, blob){
        switch (headerString) {
           case "ffd8ffe2":
           await setprofilePicValidation(true);
            console.log("state",profilePicValidation);
            return true;
            break;
        default:
            await setprofilePicValidation(false);
            console.log("state",profilePicValidation);
            break;
        }
     }

Original:

    const [profilePicValidation, setprofilePicValidation] = useState("")

    function mimeType(headerString, blob){
        switch (headerString) {
           case "ffd8ffe2":
            setprofilePicValidation(true);
            console.log("state",profilePicValidation);
            return true;
            break;
          default:
            setprofilePicValidation(false);
            console.log("state",profilePicValidation);
            break;
        }
     }

Upvotes: 1

Views: 90

Answers (1)

Jasper Bernales
Jasper Bernales

Reputation: 1681

I have a workaround which may work for you.

import {useState, useEffect} from 'react'

const [profilePicValidation, setprofilePicValidation] = useState("")
useEffect(() => {
   // updated profilePicValidation
   console.log('state', profilePicValidation)
}, [profilePicValidation])

function mimeType(headerString, blob){
    switch (headerString) {
       case "ffd8ffe2":
       setprofilePicValidation(true);
       return true;
       break;
    default:
       setprofilePicValidation(false);
       break;
    }
 }

Upvotes: 2

Related Questions