Javascript 刷新页面时丢失访问令牌

Javascript 刷新页面时丢失访问令牌,javascript,reactjs,spotify,Javascript,Reactjs,Spotify,因此,我有一个路由到页面的javascript文件,“主页”会丢失访问令牌,并在页面刷新时变为空值。当页面刷新时,如何防止它丢失令牌。因为现在,如果我按下主页上的刷新按钮,它将丢失访问令牌,直到我按下注销并重新登录 var Spotify = require('spotify-web-api-js'); var spotifyApi = new Spotify(); class App extends Component { constructor(){ super();

因此,我有一个路由到页面的javascript文件,“主页”会丢失访问令牌,并在页面刷新时变为空值。当页面刷新时,如何防止它丢失令牌。因为现在,如果我按下主页上的刷新按钮,它将丢失访问令牌,直到我按下注销并重新登录

var Spotify = require('spotify-web-api-js');
var spotifyApi = new Spotify();

class App extends Component {
  constructor(){
    super();
    const params = this.getHashParams(); //tokens saved here
    const token = params.access_token;
    if (token) {
      spotifyApi.setAccessToken(token);
    }
    this.state = {
      loggedIn: token ? true : false,
      atoken: token, //access token
    };
    console.log(spotifyApi.getAccessToken())
    //localStorage.setItem(token, this.state.atoken)
  }

    getHashParams() { //gets users refresh and access token
      var hashParams = {};
      var e, r = /([^&;=]+)=?([^&;]*)/g,
          q = window.location.hash.substring(1);
      e = r.exec(q)
      while (e) {
         hashParams[e[1]] = decodeURIComponent(e[2]);
         e = r.exec(q);
      }
      return hashParams;
  }
  render() {
    return (
      <Router>
        <div className='App'>
          <Route exact path = '/' component= {Home}/>
          <Route path= '/playlist' component = {Playlist}/>
        </div>
      </Router>

    ); 
  }
}
export default App;
var Spotify=require('Spotify-web-api-js');
var spotifyApi=new Spotify();
类应用程序扩展组件{
构造函数(){
超级();
const params=this.getHashParams();//保存在此处的令牌
const token=params.access_token;
如果(令牌){
spotifyApi.setAccessToken(令牌);
}
此.state={
loggedIn:标记?对:错,
atoken:token,//访问令牌
};
console.log(spotifyApi.getAccessToken())
//setItem(令牌,this.state.atoken)
}
getHashParams(){//获取用户刷新和访问令牌
var hashParams={};
变量e,r=/([^&;=]+)=?([^&;]*)/g,
q=window.location.hash.substring(1);
e=r.exec(q)
while(e){
hashParams[e[1]]=decodeURIComponent(e[2]);
e=r.exec(q);
}
返回hashParams;
}
render(){
返回(
); 
}
}
导出默认应用程序;

您正在将内容存储在LocalStorage中,但我看不到您将这些值提取出来。哦,是的,我在玩弄LocalStorage以了解它是如何工作的,我的代码没有真正使用它,我在发布此问题之前忘了删除该行。我不确定localStorage的范围是如何工作的。例如,如果我在父类“App”的localStorage中设置变量,我不确定如何将其传递给“Home”类@每当刷新页面时,应用程序的整个内存都会被清除。因此,要保留某些东西(比如代币),您需要将其存储在某个地方。LocalStorage是一个完美的地方。@即使是,但假设我将访问令牌存储在父类“App”的本地存储中,当我执行LocalStorage.get()时,子组件“Home”是否仍然可以访问相同的LocalStorage?因为我不了解localStorage的作用域是如何工作的localStorage的作用域是每个域。任何选项卡,任何组件都可以全局访问存储在LocalStorage中的同一个存储,但我看不到您将这些值拉回来。哦,是的,我在玩弄LocalStorage以了解它是如何工作的,我的代码没有真正使用它,我在发布此问题之前忘记删除该行。我不确定localStorage的范围是如何工作的。例如,如果我在父类“App”的localStorage中设置变量,我不确定如何将其传递给“Home”类@每当刷新页面时,应用程序的整个内存都会被清除。因此,要保留某些东西(比如代币),您需要将其存储在某个地方。LocalStorage是一个完美的地方。@即使是,但假设我将访问令牌存储在父类“App”的本地存储中,当我执行LocalStorage.get()时,子组件“Home”是否仍然可以访问相同的LocalStorage?因为我不了解localStorage的作用域是如何工作的localStorage的作用域是每个域。任何选项卡、任何组件都将具有对同一存储的全局访问权限