直到现在无论如何,我已经建立了反应+助焊剂应用程序,根据应用程序的要求构建商店的初始状态很容易。我可以使用简单的JS对象,或者如果状态需要持久化,我使用了具有同步api的localStorage,从而导致在调用getInitialState时状态可用。
getInitialState() {
return State.getInitialState();//synchronous method which returns state
}
但是,根据当前的要求,我必须从indexeddb保存和检索状态,indexeddb的api是异步的。因此,我当前获得的intialState是未定义的,这导致不变的违规错误。
是否可以异步加载商店中的initialState?
答案 0 :(得分:0)
假设您的商店有一个getInitialState()方法。并返回一些包含商店中所有数据的对象。您应该在商店中指定组件应具有的默认值。
class ExampleStore {
constructor(){
this.something = false
this.somethingElse = false
this.someData = {}
}
getInitialState(){
return {
something: this.something,
somethingElse: this.somethingElse,
someData: this.someData,
};
}
}
您希望使用此方法的原因是您不希望在每个组件中复制代码只是为了等待异步调用。让商店返回一些默认值,然后当新数据进入并将其分配给商店时,更新具有商店更改功能的组件。