Alt:getState()不返回类实例

时间:2015-11-28 07:52:09

标签: reactjs alt

我尝试在Alt Store中返回类实例,但它总是返回Javascript Object,而不是类实例。这是getState()的默认行为吗?如何返回类实例?

import alt from '../alt';
import ScheduleActions from '../actions/ScheduleActions.js';
import ScheduleApiUtils from '../utils/ScheduleApiUtils';

class ScheduleStore {
  constructor() {
    this.state = {
      test: new String("test")
    }
    console.log(this.state.test instanceof String); // return true
  }
  static getSchedules() {
    console.log(this.getState().test instanceof String); // return false
  }

}

export default alt.createStore(ScheduleStore, 'ScheduleStore'); 

2 个答案:

答案 0 :(得分:0)

这不是React特有的。这就是javascript的运作方式。尝试打开控制台并询问类型:

typeof "test"
typeof {}
typeof []
typeof true
typeof false

如果您想检查javascript中的类型,可能需要查看http://javascript.info/tutorial/type-detection

答案 1 :(得分:0)

首先,在JavaScript中,字符串文字原语和String类的类型不同。换句话说,字符串文字不是String

的实例
console.log("test" instanceof String) // false
console.log(new String("test") instanceof String) // true

其次,从Store#getState()上的Alt文档中,它会返回数据的副本

  

调用[getState]后,它会执行商店状态的浅表副本,   这样你就不会意外地覆盖/改变你的任何商店   状态。

我不确切地知道Alt是如何在内部复制这个副本的,但我认为它不是使用new String()来复制字符串值,但是它确实执行复制是将它们转换为字符串文字类型。

使用new String()而不是字符串文字在JavaScript中不常见。