2017-05-29 57 views
0

我不明白,我看到所有這些人在討論localStorage或sessionStorage,但在我的React項目中我還沒有定義。他們如何從真正的Web API獲取該對象?如何在React中訪問Web API的sessionStorage對象

例子:

persistent-state-reactjs

redux-sessionstorage

react-redux-jwt-auth-example

每一個節目叫的localStorage或sessionStorage的,但如何的呢?我沒有看到他們使用任何庫來解決這個問題。我能想到的唯一的事情是他們正在使用像幻影或casper?我只在第三個url的package.json中看到幻影。即便如此,我也看不出他是如何給Phantom加插的,如果不是,他是否有一個localStorage實例? enter image description here

+0

是否呈現了您的應用服務器?如果是這樣,那麼當你說服務器呈現,你不會得到localStorage和sessionStorage –

回答

0

localStoragesessionStorage是內置的從Web API的對象,所以你不需要任何庫如果你在前端使用它們使用它們。我的猜測是,localStoragesessionStorage不可用,因爲您的反應應用程序是服務器呈現。您可以通過在應用程序某處運行代碼來測試它們。如果它們不存在,並且您仍然希望將您的應用程序渲染爲服務器,則可以使用如下所示的庫:https://www.npmjs.com/package/web-storage

try { 
 
    // localstorage or sessionstorage init 
 
    // ... 
 
} catch (e) { 
 
    // they are not defined, use a library 
 
    console.log(e); // look at error 
 
    
 
    // if localStorage is not defined, use a library 
 
    window.localStorage = require('web-storage')().localStorage; 
 
}

希望這有助於。

+0

,這不是一個同構的應用程序。我只是使用react-redux。 – PositiveGuy

+0

我想我可能錯過了一些東西。代碼代碼「let token = localStorage.getItem('token')'解決了什麼問題?它是空的還是未定義的?當你使用console.log(localStorage)'時會發生什麼? –