将版本__v置于redux状态的位置?

时间:2016-09-12 06:19:13

标签: mongodb redux

我有一个分散在应用程序周围的模型。我有一个redux状态树:

{
  page: {
     modelPart1: ...,
     ... : {
        modelPart2: ...
     }
}

我也需要在我的州内继续引用mongoDb __v。放置它的最佳位置在哪里?

我在考虑一个单独的分支model_metadata来保存关于文档的元数据(_id,__ v,...)。

   {
      model_metadata: { <------------------------ HERE
        model: { 
          _id: id,
          __v: 2
        }
      }
      page: {
         modelPart1: ...,
         ... : {
            modelPart2: ...
         }
    }

这是一种有效的方法,还是会推荐一种不同的方法?

1 个答案:

答案 0 :(得分:1)

每个reducer只能访问自己的一部分状态,所以当你这样做时

combineReducers({
  one,
  another
});

并访问state中的one,相当于执行store.getState().one,而another则相同。因此,您需要将状态page属性中的数据拆分为两部分:实际数据和元数据。就像你从Mongo中检索的对象一样。

同一个reducer处理元数据和实际数据的关键在于,每次执行reducer函数时,您都需要在该函数的state参数中获得有关对象的所有信息。将数据拆分为两个不同的reducer会使事情变得更加复杂。

因此,page中的新数据表示看起来像

{
   model_metadata: { <------------------------ HERE
     model: { 
       _id: id,
       __v: 2
     }
   }
   page: {
      modelPart1: ...,
      ... : {
         modelPart2: ...
      }
 }

连接到page时看起来像

connect(state => ({
  page: state.page
})(...)