在react应用程序中使用本地/会话存储设置初始状态

时间:2018-04-18 14:17:49

标签: reactjs state session-storage

我想使用本地/会话存储启动我的状态。这种方法有效吗?我试过但它给了我一个错误。如果没有,那么如何从存储中直接检索值到我的状态?

constructor(props) {
super(props);
      sessionStorage.setItem('testkey','test value')
      this.state = {
            abc: sessionStorage.getItem('testkey')
       }
}

错误始终未定义。

另外,如果我使用相反的方法,下面的代码可以正常工作

constructor(props) {
super(props);
      this.state = {
          abc: this.getItems(val)
      }
     this.getItems = this.getItems.bind(this);
}

getItems(value){
   let selectedItem =  value;
   return selectedItem;
}

但是当我这样做时,它并没有。我无法从会话存储中获取值。

   constructor(props) {
    super(props);
          this.state = {
              abc: this.getItems(val)
          }
         this.getItems = this.getItems.bind(this);
    }



 getItems(val){
       let setItem = sessionStorage.setItem('testkey', val);
       let getItem = sessionStorage.getItem('testkey');
       return getItem;
    }

当我将getItem记录到我的控制台时,它会给我一个对象。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

我仍然不太清楚你的意思,但你必须使用this.setState()。

此功能接受json {' key':' value'} 一旦设置它就会更新状态。 你实际上不必在一个州内存储一个函数。

我不知道这是否是你使用getter和setter的东西。 使用setState设置变量值,然后使用this.state。[variable_name]。

检索它们

希望这有帮助。

def borough_id(borough):
    if 'Bronx' in borough:
        return 5
    elif ...
        ...
        ...
    else:
        return None

df['borough_num'] = df['Borough'].apply(lambda x: borough_id(x))

快乐的编码。