search

Home  >  Q&A  >  body text

In React, localstorage.getItem returns null

index.js:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
const obj = { a: "xxx", b: "yyy" }
localStorage.setItem('obj', JSON.stringify(obj));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

Client.js:

let settings = JSON.parse(localStorage.getItem('obj'));
const oktaAuth = new OktaAuth({
    issuer: settings['a'],
    clientId: settings['b'],
    redirectUri: window.location.origin + '/login/callback',
    logoutUrl: window.location.origin + '/login',
    // pkce: false
});

I imported the client in App, it seems that localStorage should set Item before client.js is run. But my localStrorage.getItem('obj') is null. Does anyone know why?

P粉551084295P粉551084295260 days ago1663

reply all(1)I'll reply

  • P粉948258958

    P粉9482589582024-04-06 11:16:28

    Use useEffect()

    import React, {useEffect} from 'react';
    
    const App = () => {
    
    useEffect(() => {
    const obj = { a: "xxx", b: "yyy" }
    localStorage.setItem('obj', JSON.stringify(obj));
    },[])
    
    return (
         
    ) }

    reply
    0
  • Cancelreply