Javascript 使用Redux在存储上创建initialState

Javascript 使用Redux在存储上创建initialState,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在使用repo from在我现有的应用程序中实现。然而,在我现有的应用程序中,它包含了各种具有自己特定初始状态的还原器。在回购协议中,initialState位于main.js中 const initialState = { regionData: statesData, emptyRegions: [], sortState: { key: 'regionName', direction: 'ASC' } }; const store = createStore(

我正在使用repo from在我现有的应用程序中实现。然而,在我现有的应用程序中,它包含了各种具有自己特定初始状态的还原器。在回购协议中,initialState位于main.js中

const initialState = {
    regionData: statesData,
    emptyRegions: [],
    sortState: { key: 'regionName', direction: 'ASC' }
};

const store = createStore(rootReducer, initialState);
我在repo中分离出了reducer(不使用index.js组合其中的3个),这样我就可以将它们添加到现有代码中

const reducers = {
    User: require('../reducers/User.js'),
    Alert: require('../reducers/Alert.js'),
    Auth: require('../reducers/Auth.js'),
    Header: require('../reducers/Header.js'),
    PasswordPolicy: require('../reducers/PasswordPolicy.js'),
    AuditTrail: require('../reducers/AuditTrail.js'),
    StoragePolicy: require('../reducers/StoragePolicy.js'),
    DragAndDrop: require('../reducers/DragAndDrop.js'),
    UserProfile: require('../reducers/UserProfile.js'),
    emptyRegions: require('../reducers/map/emptyRegions.js'), //here is it
    regionData: require('../reducers/map/regionData.js'), //here is it
    sortState: require('../reducers/map/sortState.js'), //here is it
    Storage: require('./storage/Storage.js'),
    router: routerStateReducer
};
module.exports = combineReducers(reducers);
我有一个文件来组合所有的减速机和它们的每个初始状态(与特定的减速机在同一个文件中)

stores/index.js

module.exports = function(initialState) {
const store = redux.createStore(reducers, initialState,

    compose(reduxReactRouter({ createHistory }), window.devToolsExtension ? window.devToolsExtension() : f => f)
)

if (module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('../reducers', () => {
        const nextReducer = require('../reducers')
        store.replaceReducer(nextReducer)
    })
}
return store
}
我试图将InitiateEstate放入sortState.js,但它不起作用。 数据没有显示出来。这一定是作者的回购协议中提到的东西

const store = createStore(rootReducer, initialState);
将initialState设置为应用程序状态


请开导我。感谢如果您使用的是
组合减速器(…)
,则每个减速器都需要在第一次运行时返回其初始状态

const DEFAULT_STATE = { … }
const emptyRegionsReducer = (state = DEFAULT_STATE, action) => {
  switch (action.type) {
    …
    default:
      return state;
  }
}
在redux回购协议中查看。对于对象中的每个减速器:

const initialState = reducer(undefined, { type: ActionTypes.INIT })

调用
combineReducers()
时立即触发的内容。

有两种方法可以初始化Redux中的状态-即

您可以设置全局初始状态,方法是将其作为可选的第二个参数传递给
createStore
函数,如下所示:

const initialState = { /*..initial state props..*/ }    
const store = createStore(rootReducer, initialState);
或者,您可以通过以下方式(从官方文档)设置单个减速器的初始状态:

传递
state=0
意味着
state
在该减速机首次初始化时被赋予值0。
计数器
减速机初始化后,
状态
值变为Redux存储中的任何
计数器
。需要注意的一件重要事情是,您必须包括行
default:returnstate
以使此方法正常工作

在您的情况下,看起来您正在使用两种方法。如果您对在减缩器中设置的initialState感到满意,那么应该从
createStore
中删除
initialState
参数:

const store = createStore(rootReducer);

“我有一个文件来组合所有的还原程序和它们的每个初始状态”-你能提供组合初始状态的代码吗?@cathalkilleen例如,我有一个名为User.js的还原程序文件,var initialstate={User\u credential:{userId:null,username:null,isVerified:false,email:null};module.exports=(state=initialState,action='')=>{switch(action.type){case'GET_USER':……因此initialState被传递到module.exports=(state=initialState…)我在sortState.js中进行了尝试,但它在regionData.js中不起作用,module.exports=(state=[],action)=>{switch(action.type){case EDIT_ROW:…,我如何分配state=initialState,因为它是一个空数组。但它不应该是`module.exports=(state=statesData,action)`如上所述的预加载状态?谢谢。我最终在单个reducer上设置了initiateState。是的,文档中确实提到了这两种方式,但这对简单值有效,如果您的初始状态是动态API响应,例如结果列表的第一页,该怎么办?
const store = createStore(rootReducer);