console.log(saveState) //IT RETURNS {user: {lat: -20.8213224, lng: -49.3581463}}
console.log(typeof saveState) //RETURNS "object"
console.log(JSON.stringify(saveState)) //RETURNS {"user":{}}
Why is it happening, what i'm doing wrong? I'm using Javascript
This is the code of the error: I'm trying to take states from localStorage, and send it to redux Storage. I'm coding in Next.JS + Redux
Codes below
app.tsx
import type { AppProps } from 'next/app'
import { localStorageKeys, storeWrapper } from '../store'
import { Provider } from 'react-redux'
import { useEffect } from 'react'
import { userUpdate } from '../store/actions/users'
import GlobalStyle from '../styles/global'
import { Navbar } from '../components/Navbar'
import CategorySelector from '../components/CategorySelector'
import Head from 'next/head'
function App({ Component, pageProps }: AppProps) {
const {store, props} = storeWrapper.useWrappedStore(pageProps)
useEffect(()=>{
let state: any = localStorage.getItem(process.env.NEXT_PUBLIC_STORAGE_KEY||"")
if(state){
try{
state = JSON.parse(state)
if(state.user){
if(!state.user.lat || !state.user.lng){
navigator.geolocation.getCurrentPosition((pos)=>{
state.user.lat = pos.coords.latitude;
state.user.lng = pos.coords.longitude;
})
}
}
else{
navigator.geolocation.getCurrentPosition((pos)=>{
state.user.lat = pos.coords.latitude;
state.user.lng = pos.coords.longitude;
})
}
}catch{
state = {}
}
}else{
state = {}
state.user = {}
navigator.geolocation.getCurrentPosition((pos)=>{
state.user.lat = pos.coords.latitude,
state.user.lng = pos.coords.longitude
})
}
Object.entries(localStorageKeys).map((val, index)=>{
const [ref, key] = val
if(state[ref]){
switch(ref){
case 'user':
store.dispatch(userUpdate(state[key]))
break
default:
break
}
}
})
})
return (
<Provider store={store}>
<GlobalStyle />
<Navbar />
<CategorySelector />
<Component {...pageProps} />
</Provider>
)
}
export default App
Here is the function that isn't working well, when I'm trying to convert the state to string to save, it returns nothing, but when it is in object type, it returns lat and lng properly saveState.ts
export const saveState = (key: string, value: any) => {
let state: any = localStorage.getItem(keyName)
console.log("SAVE", key, value)
if(state){
try{
state = JSON.parse(state)
}catch{
state = {}
}
}else{
state = {}
}
state[key] = value
const saveState = state
console.log(saveState)
console.log(typeof saveState)
console.log(JSON.stringify({saveState}))
localStorage.setItem(keyName, JSON.stringify(state))
}
I really dont know what to do