我有一个分散在应用程序周围的模型。我有一个redux状态树:
{
page: {
modelPart1: ...,
... : {
modelPart2: ...
}
}
我也需要在我的州内继续引用mongoDb __v
。放置它的最佳位置在哪里?
我在考虑一个单独的分支model_metadata
来保存关于文档的元数据(_id,__ v,...)。
{
model_metadata: { <------------------------ HERE
model: {
_id: id,
__v: 2
}
}
page: {
modelPart1: ...,
... : {
modelPart2: ...
}
}
这是一种有效的方法,还是会推荐一种不同的方法?
答案 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
})(...)