Home > front end >  Checking two variables on condition from localStorage:
Checking two variables on condition from localStorage:

Time:01-13

Is there a way to check to variable in localstorage ?

Storage {user: 'undefined', new: '{"_id":"61dd228336a3923d2286b994","email":"ahmadsa…","updatedAt":"2022-01-11T06:24:03.675Z","__v":0}', lscache-localhost:preview:v20180702-cacheexpiration: '27376332', lscache-localhost:preview:v20180702: '{}', length: 4}

And sometimes the data may be on the user property base on user login . below is the login that returns the property in user

   Storage {user: '{"team_members":{"memberFullname1":"memberFullname…","updatedAt":"2022-01-10T01:43:30.288Z","__v":0}', new: 'null', length: 2}

How can I create condition that checks both property an only return the ones that contain a value ?

Base on user log in, I can only use one variable either new or user. Is there not away I can check two conditions before rendering my data from localStorage ?

This is the Method I try. But it only check the first condition even though the second condition is there, it return. Uncaught error in Json.parse()

if (typeof Storage !== "undefined") {
  if (localStorage.getItem("new")) {
    setUser(JSON.parse(window.localStorage.getItem("new")));
  } else if (localStorage.getItem("user")) {
    setUser(JSON.parse(window.localStorage.getItem("user")));
  }
  return;
}

Is there a way I can check both condition ? Your time is really appreciated. please I am a brother need.. And lastly how can I prevent re-rendering of the state

CodePudding user response:

If user undefined, do new, if that's undefined, do {}, parse.

if (typeof Storage !== "undefined") {
  setUser(JSON.parse(localStorage.user || localStorage.new || '{}'));
}

Though, if you look at new, it's not the same as user, in terms of structure so you might want to fix that else they are not the same thing.

CodePudding user response:

I found these code allows me to check both conditions and it didn't return error like the previous code. But value is not been returned from the state. Any Idea Why?

As you can see I set the value in a useState.... setUser(); but user is returning null

   useEffect(() => {
    const fetchStates = async () => {
      const result = await axios(
        "https://nigerian-states-info.herokuapp.com/api/v1/states"
      );
      setStates(result.data.data);
    };
    fetchStates();
    if (localStorage.user === undefined) {
      return setUser(JSON.parse(localStorage.getItem("new")));
    } else if (localStorage.new === undefined) {
      return setUser(JSON.parse(localStorage.getItem("user")));
    }
  }, [formData, user]);

I am calling it in a useEffect Hooks... my state user return null....

  •  Tags:  
  • Related