Reactjs 使用redux存储规范化数据

Reactjs 使用redux存储规范化数据,reactjs,redux,reducers,normalizr,Reactjs,Redux,Reducers,Normalizr,我希望我的还原程序在状态中填充根对象,独立于它们操作的状态片 我已经找到了很多页面来解释normalizer有多棒,但是没有人解释在哪里以及如何存储这些规范化数据 问题是: 我是不是在尝试做一些不寻常的错事 如何修改根状态对象中的状态,因为还原程序只对数据的一部分进行操作 因此: const videos = (state, action) => { switch (action.type) { case 'LOAD_VIDEOS': { return ....

我希望我的还原程序在状态中填充根对象,独立于它们操作的状态片

我已经找到了很多页面来解释normalizer有多棒,但是没有人解释在哪里以及如何存储这些规范化数据

问题是:

  • 我是不是在尝试做一些不寻常的错事

  • 如何修改根状态对象中的状态,因为还原程序只对数据的一部分进行操作

  • 因此:

    const videos = (state, action) => {
      switch (action.type) {  
        case 'LOAD_VIDEOS': {
          return ....
        }
      }
    }
    

    不仅应使用规范化数据填充
    state.videos
    (使用视频id数组),还应使用规范化数据填充
    state.database.videos
    (以及其他键,如果视频包含其他实体)。

    如果减速机需要处理多个状态片,请为其提供整个状态

    如果您使用的是
    组合减速器()
    ,您可以将其包装起来,这样您就可以保留组合减速器的优点,并且您仍然可以拥有在全状态下工作的减速器:

    function somePartOfState(state, action) {
      // ...
    }
    function otherPartOfState(state, action) {
      // ...
    }
    function fullState(state, action) {
      // ...
    }
    
    const combined = combineReducers({
      somePartOfState,
      otherPartOfState
    });
    
    export function rootReducer(state, action) {
      // call the combined reducers, 
      // then pass the resulting state to the fullState reducer
      return fullState(combined(state, action), action);
    }
    

    回答得好。事实上,我没有特殊的要求,只是一个普通的应用程序,所以我想知道为什么这种方法没有在任何博客、文档或教程上公布。谢谢。事实上,在移动到组合还原器之前,从一个普通函数开始,并解释说combinereducer()只是一个助手:“combinereducer()所做的只是生成一个函数,用根据键选择的状态片调用还原器,并将其结果再次组合到单个对象中。这不是魔术。”