始终使用vuex-typescript并获得未定义的初始状态。一旦我重置状态,它就可以工作,但是仅当我重置和刷新窗口时。这是一些简单模块的设置:
import Vue from "vue";
import Vuex from "vuex";
import { module } from "./some_module";
let store = new Vuex.Store({
modules: {
module,
},
plugins: [persist({
namespace: "mainnamespace",
initialState: {
},
expires: 7 * 24 * 60 * 60 * 1e3 // 1 week
})
]
});
some_module.ts
export interface State {
something: any;
}
const state: State = {
something: [],
};
export const module = {
namespaced: true,
getters: {
getSomethingArray: (state: State) => {
return state.something;
},
},
mutations: {
resetState: (s: State) => {
const initial = state;
Object.keys(initial).forEach(key => { s[key] = initial[key]; });
},
}
actions: {///}
}
const { commit, read, dispatch } =
getStoreAccessors<HistoryState, any>("somemodule");
const mutations = module.mutations;
const getters = module.getters;
const actions = module.actions;
export const getSomeStuffFromHere = read(getters.getSomethingArray);
当我运行应用程序并且console.log(getSomethingArray(this.$store))
我得到undefined
时,当我console.log(this.$store)
时我可以看到somemodule nemespace
,但是其状态不是something: []
而是{{1 }}
答案 0 :(得分:0)
这是有线的,已通过添加状态进行了修复:
public MyConfigurator() {
serviceLocator = ServiceLocatorUtilities.createAndPopulateServiceLocator();
ServiceLocatorUtilities.enableImmediateScope(serviceLocator);
ServiceLocatorUtilities.bind(serviceLocator, new AbstractBinder() {
@Override
protected void configure() {
bind(MySocket.class).to(MySocket.class);
bind(LManager.class).to(DCService.class);
}
});
}
@Override
public <T> T getEndpointInstance(Class<T> endpointClass) {
return serviceLocator.getService(endpointClass);
}
}